青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天行健 君子當(dāng)自強(qiáng)而不息

Controlling Players and Characters(12)

 

Following Another Character
 

Although following another character might seem complicated at first, don’t worry
too much. Remember that keeping it simple is the solution. Following a character
is as easy as walking a route. Because a character already knows its own coordinates
and the coordinates of the character it is following, you can use previously seen
functions to move the character toward another one.
 

The only difference at this point is that you might want a character to get within a
specific distance from the followed character, as illustrated in Figure 16.5.

Knowing each character’s coordinates (the character being followed and the character
doing the following), you can construct a single function that determines
which direction the “following” character should move:

void CalculateFollowMovement(
  float CharXPos, float CharZPos, // Coordinate of character
  float WalkSpeed, // Walking speed of char.
  float FollowXPos, float FollowZPos, // Coords of followed char.
  float FollowDistance, // Distance to follow at
  float *MoveX, float *MoveZ) // Variables for movement
{
  // Fix for faster distance checking
  FollowDistance *= FollowDistance;

  // Get distance between characters
  float XDiff = (float)fabs(FollowXPos - CharXPos);
  float ZDiff = (float)fabs(FollowZPos - CharZPos);
  float Length = XDiff*XDiff + ZDiff*ZDiff;

  // If distance between characters is less than allowed,
  // then just stand still.
  if(Length < FollowDistance) {
    *MoveX = *MoveZ = 0.0f;
    return;
  }

  // Calculate rate to move based on character walking speed
  Length = sqrt(Length);
  *MoveX = (CharXPos - FollowXPos) / Length * WalkSpeed;
  *MoveZ = (CharZPos - FollowZPos) / Length * WalkSpeed;
}

Whenever you want to update a character that is following another one, you merely
pass along the required data and move the character using the returned movement
variables.

 

Evading Another Character
 

Evading means to move a character away from another one. If the character to be
avoided is closer than the minimum set distance, the evading character moves in
the opposite direction through the use of the CalculateEvadeMovement function:

void CalculateEvadeMovement(
  float CharXPos, float CharZPos, // Coordinate of character
  float WalkSpeed, // Walking speed of char.
  float FollowXPos, float FollowZPos, // Coords of evaded char.
  float EvadeDistance, // Distance to evade
  float *MoveX, float *MoveZ) // Variables for movement
{
  // Fix for faster distance checking
  FollowDistance *= FollowDistance;

  // Get distance between characters
  float XDiff = (float)fabs(FollowXPos - CharXPos);
  float ZDiff = (float)fabs(FollowZPos - CharZPos);
  float Length = XDiff*XDiff + ZDiff*ZDiff;

  // If distance between characters is more than allowed,
  // then just stand still.
  if(Length > EvadeDistance) {
    *MoveX = *MoveZ = 0.0f;
    return;
  }

  // Calculate rate to move based on character walking speed
  Length = sqrt(Length);
  *MoveX = -((CharXPos - FollowXPos) / Length * WalkSpeed);
  *MoveZ = -((CharZPos - FollowZPos) / Length * WalkSpeed);
}


posted on 2007-11-14 15:56 lovedday 閱讀(190) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


公告

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

隨筆分類(178)

3D游戲編程相關(guān)鏈接

搜索

最新評(píng)論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩亚洲91| 国产精品hd| 在线电影院国产精品| 久久人人爽国产| 老鸭窝毛片一区二区三区| 一区二区三区自拍| 亚洲第一精品夜夜躁人人爽| 久久久久久亚洲精品杨幂换脸| 原创国产精品91| 亚洲日本黄色| 国产精品婷婷| 久热精品在线| 欧美另类在线播放| 亚洲欧美国产精品va在线观看| 亚洲欧洲av一区二区| 国产一区视频网站| 亚洲国产精品久久久久| 欧美日韩一区二区三区| 久久不射中文字幕| 久热精品视频在线| 亚洲天堂免费观看| 久久gogo国模裸体人体| 亚洲美女性视频| 先锋资源久久| 亚洲另类自拍| 欧美专区日韩专区| 亚洲精选大片| 欧美在线观看天堂一区二区三区| 亚洲黄页一区| 亚洲欧美日韩一区二区三区在线观看 | 久久精品首页| 在线亚洲电影| 久久青草福利网站| 亚洲欧美一区二区三区极速播放| 久久婷婷一区| 欧美在线观看天堂一区二区三区| 免费日韩精品中文字幕视频在线| 亚洲欧美国产视频| 欧美成人免费播放| 久久久久久有精品国产| 欧美日韩一区二区三区免费| 久久亚洲视频| 国产精品日本精品| 亚洲精品字幕| 亚洲电影免费观看高清| 西西人体一区二区| 亚洲欧美日韩一区二区三区在线| 你懂的视频欧美| 久久综合99re88久久爱| 国产精品成人免费精品自在线观看| 欧美福利视频在线观看| 狠狠色2019综合网| 亚洲男人的天堂在线| 在线一区观看| 欧美精选一区| 亚洲日本中文| 日韩视频在线一区| 鲁大师影院一区二区三区| 久久精品女人天堂| 国产欧美日韩另类一区| 亚洲午夜精品国产| 亚洲欧美国产77777| 欧美日韩直播| 中文精品视频| 欧美一二三视频| 国产欧美精品一区| 欧美一区二区在线视频| 欧美一区二区免费视频| 国产精品综合久久久| 亚洲一二三区在线观看| 亚洲一区二区视频| 国产精品欧美日韩久久| 亚洲永久网站| 久久久综合网站| 亚洲国产导航| 欧美激情bt| 99视频在线观看一区三区| 亚洲一区二区网站| 国产日韩精品入口| 久久精品视频免费观看| 欧美福利专区| 在线一区二区三区四区| 国产精品免费视频xxxx| 午夜在线观看免费一区| 久久噜噜亚洲综合| 亚洲精品国精品久久99热| 欧美国产日韩免费| 9久草视频在线视频精品| 亚洲专区在线| 影音先锋另类| 欧美日韩在线播放三区| 午夜一级在线看亚洲| 免费在线播放第一区高清av| 亚洲人永久免费| 欧美亚男人的天堂| 久久精品亚洲乱码伦伦中文| 欧美国产大片| 亚洲欧美日韩一区二区在线| 韩国一区二区在线观看| 欧美国产视频一区二区| 亚洲一区二区在线免费观看视频| 久久精品欧美日韩| 99精品99| 激情欧美一区二区| 欧美性猛交xxxx乱大交蜜桃| 久久国产一区| 中文在线资源观看网站视频免费不卡 | 在线播放国产一区中文字幕剧情欧美 | 免费不卡在线视频| 亚洲一区欧美| 亚洲黄一区二区| 国产日韩欧美在线一区| 欧美a级一区二区| 亚洲欧美中文日韩v在线观看| 欧美第一黄网免费网站| 亚洲欧美日本视频在线观看| 亚洲国产另类久久精品| 国产精品美女久久久久久久 | 国产精品99久久久久久人 | 亚洲无线一线二线三线区别av| 国产一区二区日韩精品欧美精品| 欧美日韩国产一区二区三区地区| 性色av一区二区三区在线观看| 99精品国产福利在线观看免费| 老司机成人网| 久久精品人人做人人爽电影蜜月| 一本色道久久综合亚洲二区三区| 在线看片一区| 黑人一区二区| 国产主播一区二区三区| 国产精品久久久久aaaa九色| 欧美日韩第一页| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲欧洲99久久| 亚洲欧美国产日韩中文字幕| 一区二区三区国产| 日韩一级裸体免费视频| 亚洲欧洲在线一区| 欧美激情一级片一区二区| 久色成人在线| 蜜桃精品一区二区三区| 久久免费黄色| 久久综合一区| 欧美va亚洲va日韩∨a综合色| 麻豆91精品| 欧美国产第一页| 亚洲欧洲一区二区三区| 亚洲精品美女91| 一本久道久久久| 中日韩高清电影网| 午夜亚洲激情| 久久久久久久激情视频| 久久性天堂网| 欧美高清在线视频| 欧美人与性动交α欧美精品济南到| 欧美电影电视剧在线观看| 欧美成人午夜77777| 欧美另类videos死尸| 欧美日韩在线视频一区| 国产精品毛片在线看| 国产亚洲综合精品| 亚洲第一页中文字幕| 亚洲美女视频在线观看| 亚洲一级在线| 久久人人爽人人爽| 亚洲高清免费在线| 一本色道久久综合狠狠躁篇怎么玩| 亚洲一区二区黄色| 久久久久九九九| 欧美日韩国产综合视频在线| 国产精品视频区| 一区免费视频| 一区二区日韩欧美| 久久精品99久久香蕉国产色戒| 美女国产一区| 99国产精品国产精品毛片| 亚洲欧美日韩视频一区| 久久在线免费观看视频| 欧美精品粉嫩高潮一区二区 | 欧美日韩理论| 国内外成人在线视频| 亚洲精品视频一区二区三区| 亚洲欧美日本伦理| 欧美激情精品久久久久久黑人| 亚洲靠逼com| 久久久国产91| 国产精品www色诱视频| 伊人春色精品| 亚洲淫片在线视频| 欧美不卡视频一区发布| 一区二区三区日韩欧美| 美女久久网站| 国产一二三精品| 亚洲香蕉成视频在线观看| 欧美波霸影院| 性做久久久久久久免费看| 欧美日韩在线不卡| 91久久精品美女| 老司机免费视频一区二区| 亚洲一区二区免费视频|