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

天行健 君子當自強而不息

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) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


公告

導航

統計

常用鏈接

隨筆分類(178)

3D游戲編程相關鏈接

搜索

最新評論

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久热精品视频在线观看| 欧美在线高清| 麻豆av一区二区三区| 国产午夜精品美女视频明星a级| 亚洲人体一区| 亚洲国产婷婷综合在线精品 | 国产精品自在欧美一区| 亚洲精品一二区| 欧美激情一区二区三区在线视频观看 | 久久一综合视频| 国产精品久久久一区麻豆最新章节 | 在线视频你懂得一区二区三区| 欧美成人精品一区二区三区| 韩国美女久久| 免费影视亚洲| 猛男gaygay欧美视频| 亚洲福利久久| 亚洲国产欧美在线| 欧美日韩第一区| 亚洲视频高清| 99国产精品久久久久久久| 欧美人体xx| 亚洲天堂网在线观看| 一本色道久久88综合亚洲精品ⅰ| 欧美色区777第一页| 亚洲欧美日韩在线观看a三区| 亚洲免费av电影| 国产精品欧美一区二区三区奶水| 亚洲欧美资源在线| 久久电影一区| 亚洲精品一区在线观看香蕉| 亚洲美女视频在线免费观看| 欧美视频在线视频| 久久精品国产96久久久香蕉| 久久亚洲精品网站| 9色porny自拍视频一区二区| 在线视频日韩精品| 国产一区二区三区免费观看| 欧美二区在线看| 欧美日韩视频在线| 久久国产精品久久久久久久久久| 久久久久久久一区| 亚洲免费电影在线观看| 亚洲欧美在线一区| 亚洲国产日韩欧美在线99 | 亚洲精品日韩在线观看| 亚洲欧洲在线视频| 国内一区二区三区在线视频| 欧美二区在线观看| 国产精品色午夜在线观看| 久久综合激情| 欧美日韩精品欧美日韩精品一| 久久精品99久久香蕉国产色戒| 麻豆成人在线播放| 99国产精品久久久久久久| 性刺激综合网| 国产精品99久久不卡二区| 久久av二区| 亚洲女与黑人做爰| 久久av一区二区三区亚洲| 亚洲视频在线一区观看| 久久久久免费| 欧美亚洲一级| 欧美日韩午夜视频在线观看| 欧美福利一区二区三区| 国产精品久久9| 亚洲精品一区二区网址| 在线看国产一区| 亚洲综合精品四区| 日韩午夜三级在线| 蜜臀久久99精品久久久画质超高清| 亚洲女人天堂成人av在线| 蜜桃av一区二区在线观看| 久久久亚洲国产美女国产盗摄| 欧美视频一二三区| 亚洲精品一线二线三线无人区| 在线国产精品一区| 久久精品国产69国产精品亚洲| 欧美一区2区视频在线观看| 欧美日本视频在线| 亚洲人午夜精品| 最新国产成人在线观看| 久久亚洲欧洲| 欧美成人一品| 国内精品美女在线观看| 欧美一区二区三区在线| 久久成人免费| 国产精品久久久久9999| 亚洲香蕉网站| 午夜精品久久久| 国产精品一级久久久| 亚洲一区二区精品视频| 亚洲精品一区二区三| 欧美精品免费播放| 亚洲精品国产欧美| 在线亚洲高清视频| 欧美天天在线| 亚洲午夜精品久久久久久浪潮| 亚洲欧美成人网| 国产日韩欧美成人| 久久精品av麻豆的观看方式 | 黑人操亚洲美女惩罚| 久久精品中文| 欧美激情视频一区二区三区免费| 亚洲国产一区在线| 欧美理论在线播放| 亚洲视频在线观看| 欧美一区二区黄| 黄色成人免费观看| 欧美激情影音先锋| 在线亚洲美日韩| 欧美激情第1页| 99国产一区| 免费试看一区| 欧美在线视频二区| 日韩一级大片| 亚洲电影免费在线观看| 国产精品区一区二区三| 欧美精品在线一区二区| 久久精品国产第一区二区三区| 一本到12不卡视频在线dvd| 欧美激情在线免费观看| 久久精视频免费在线久久完整在线看| 亚洲理论在线观看| 在线日本欧美| 黄色日韩在线| 国产精品一区二区三区四区五区| 欧美精品一区二| 免费成人av资源网| 久久国产婷婷国产香蕉| 午夜伦欧美伦电影理论片| 一区二区三区久久精品| 99爱精品视频| 日韩亚洲不卡在线| 亚洲精品日韩一| 亚洲韩国一区二区三区| 欧美不卡在线视频| 六月丁香综合| 久久视频免费观看| 久久亚洲国产精品日日av夜夜| 欧美影院在线| 久久国产日韩欧美| 久久福利一区| 久久精品一区二区三区不卡牛牛| 亚洲欧美日韩在线综合| 亚洲免费在线播放| 午夜精品视频在线观看| 亚洲永久免费精品| 午夜精品一区二区三区四区| 亚洲中无吗在线| 性色一区二区| 久久久久久久一区| 久久九九国产精品| 另类酷文…触手系列精品集v1小说| 玖玖精品视频| 亚洲电影免费观看高清完整版在线 | 狂野欧美激情性xxxx| 牛人盗摄一区二区三区视频| 男人的天堂亚洲| 亚洲国产视频一区二区| 日韩一级大片| 亚洲欧美文学| 久久久夜精品| 欧美高清在线一区| 国产精品igao视频网网址不卡日韩| 国产精品v日韩精品| 国产欧美一区二区视频| 国产一区二区主播在线| 亚洲成色最大综合在线| 一本色道久久综合| 香蕉成人伊视频在线观看| 麻豆精品视频在线| 亚洲精品自在久久| 午夜精品成人在线| 欧美aaaaaaaa牛牛影院| 国产精品国产三级国产专区53| 国产日韩欧美精品一区| 亚洲黄网站在线观看| 亚洲欧美国产77777| 免费在线观看日韩欧美| 亚洲日本理论电影| 午夜精品久久一牛影视| 欧美激情视频免费观看| 国产亚洲精品美女| 99精品欧美一区| 久久久国际精品| 日韩视频在线观看国产| 久久精品国产77777蜜臀| 欧美日韩精品免费观看视频| 国产自产精品| 亚洲香蕉成视频在线观看| 久久在线免费观看视频| 亚洲午夜三级在线| 欧美激情视频给我| 黄色工厂这里只有精品| 亚洲一区二区四区| 亚洲国产91精品在线观看| 欧美伊人久久| 国产精品国产三级国产专播品爱网| 亚洲国产精品黑人久久久|