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

天行健 君子當自強而不息

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>
            在线免费观看日本一区| 欧美激情综合亚洲一二区| 欧美午夜精品电影| 在线视频日韩精品| 中文无字幕一区二区三区| 国产精品国产精品| 欧美一区1区三区3区公司| 亚洲欧美一区二区三区极速播放 | 久久综合狠狠| 久久米奇亚洲| 欧美一区二区三区四区在线观看地址 | 午夜久久一区| 国产亚洲va综合人人澡精品| 欧美中文日韩| 久久资源av| 一本大道av伊人久久综合| 日韩视频在线观看国产| 国产精品狠色婷| 久久在精品线影院精品国产| 女女同性精品视频| 亚洲网站在线看| 午夜精品福利一区二区三区av| 黄色av一区| 亚洲精品无人区| 国产一级揄自揄精品视频| 欧美成人精品在线| 欧美日韩中文字幕日韩欧美| 欧美在线观看网址综合| 久久亚洲春色中文字幕| 亚洲一区二区在线看| 欧美一区二区三区在线| 亚洲欧洲一区二区天堂久久| 亚洲自拍三区| 亚洲电影在线| 先锋影音一区二区三区| 亚洲伦伦在线| 久久精品国产久精国产一老狼| 99精品99| 亚洲尤物精选| 在线日韩av| 亚洲视频在线视频| 亚洲国产一区视频| 午夜一区二区三视频在线观看| 在线日韩电影| 亚洲欧美精品| 亚洲伊人第一页| 玖玖视频精品| 久久中文字幕一区| 国产精品无码永久免费888| 亚洲国产免费| 国产欧美一区二区在线观看| 亚洲人www| 亚洲国产日韩欧美在线动漫| 亚洲免费影视第一页| 一区二区三区不卡视频在线观看 | 免费观看国产成人| 国产视频久久久久久久| 亚洲另类自拍| 亚洲精品午夜| 美日韩精品免费| 欧美18av| 樱桃视频在线观看一区| 久久黄色网页| 久久久噜噜噜久久| 国产亚洲第一区| 亚洲欧美日韩直播| 欧美亚洲综合网| 国产精品一区免费观看| 亚洲视频1区| 亚洲欧美综合网| 国产精品卡一卡二| 亚洲男人的天堂在线aⅴ视频| 亚洲天堂视频在线观看| 欧美日韩综合久久| 99在线热播精品免费| 亚洲午夜精品17c| 欧美色视频在线| 亚洲无限av看| 久久国产精品亚洲va麻豆| 国产欧美 在线欧美| 欧美在线视频观看免费网站| 久久精品道一区二区三区| 国产一区免费视频| 蜜臀久久99精品久久久画质超高清| 欧美电影免费观看大全| 亚洲精品影院| 欧美视频一区二| 亚洲欧美在线网| 欧美mv日韩mv亚洲| 中文在线一区| 国产欧美日韩一区二区三区| 久久久高清一区二区三区| 免费黄网站欧美| 正在播放欧美视频| 国产欧美一区二区精品忘忧草| 久久爱www| 亚洲国产视频直播| 一本色道久久综合狠狠躁的推荐| 欧美日韩影院| 亚洲欧美日韩在线观看a三区| 可以看av的网站久久看| 亚洲精品九九| 国产精品视频一二三| 久久久久久一区二区| 亚洲日本欧美天堂| 久久成人精品视频| 亚洲免费观看在线视频| 国产麻豆9l精品三级站| 免费成人av在线| 亚洲欧美国产精品专区久久| 欧美激情欧美狂野欧美精品 | 欧美日韩精品在线视频| 午夜精品久久久久久久99水蜜桃| 麻豆成人在线| 亚洲女ⅴideoshd黑人| 亚洲黄色有码视频| 国产女优一区| 亚洲韩国日本中文字幕| 欧美在线一二三区| 亚洲毛片播放| 在线观看福利一区| 国产欧美精品久久| 欧美日韩一区二区三区在线看| 欧美一区二区视频在线观看2020| 99re8这里有精品热视频免费| 蜜臀av性久久久久蜜臀aⅴ四虎 | 亚洲福利免费| 国产九九精品视频| 欧美人与性动交cc0o| 久久人人精品| 午夜综合激情| 欧美亚洲在线视频| 亚洲少妇诱惑| 一区二区三区久久| 亚洲理论在线| 亚洲美女在线视频| 亚洲黄色影院| 亚洲精品123区| 欧美激情中文字幕乱码免费| 巨胸喷奶水www久久久免费动漫| 性8sex亚洲区入口| 亚洲欧美一区二区三区久久 | 亚洲精选成人| 久久婷婷久久一区二区三区| 日韩天堂在线视频| 亚洲国产精品久久91精品| 国产在线观看一区| 国内精品国语自产拍在线观看| 国产精品成人观看视频国产奇米| 欧美日韩1080p| 欧美啪啪一区| 欧美日韩精品一区二区三区四区 | 亚洲午夜久久久| 亚洲视频免费| 亚洲视频在线免费观看| 亚洲综合色婷婷| 性欧美video另类hd性玩具| 欧美一级理论性理论a| 欧美一区二区三区在线观看| 欧美一区二区在线播放| 久久久福利视频| 欧美电影资源| 欧美日韩一区二区国产| 国产精品久久久久久av福利软件| 国产精品一区一区| 国内久久精品| 亚洲精品欧美| 亚洲欧美日韩精品一区二区| 性欧美大战久久久久久久久| 久久久久久高潮国产精品视| 欧美激情第1页| 在线综合+亚洲+欧美中文字幕| 亚洲永久在线| 久久综合伊人77777麻豆| 欧美激情在线免费观看| 国产精品一区二区三区久久久| 国产一区二区三区四区老人| 亚洲精品中文字幕在线观看| 亚洲一区二区影院| 久久婷婷麻豆| 亚洲每日更新| 久久激情综合| 欧美日韩午夜视频在线观看| 国产亚洲福利| 中文在线不卡视频| 理论片一区二区在线| 亚洲精品欧美日韩| 欧美亚洲日本网站| 欧美日本精品在线| 狠狠色狠狠色综合人人| 亚洲午夜一区二区三区| 麻豆国产精品777777在线| 日韩视频中文| 麻豆国产精品一区二区三区| 国产精品国产成人国产三级| 亚洲人成高清| 久久亚洲精品欧美| 亚洲午夜精品| 欧美另类专区| 亚洲激情视频在线|