查看: 1067|回复: 1

八方向,命令NPC事件接近主角怎么算法.还是自己算吧.

  [复制链接]
头像被屏蔽
梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
回帖
408
发表于 2009-4-10 20:26:15 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
回帖
670
发表于 2009-9-12 19:34:45 | 显示全部楼层
  1. def move_toward_player
  2.     # 求得与主角的坐标差
  3.     sx = @x - $game_player.x
  4.     sy = @y - $game_player.y
  5.     # 坐标相等情况下
  6.     if sx == 0 and sy == 0
  7.       return
  8.     end
  9.     # 求得差的绝对值
  10.     abs_sx = sx.abs
  11.     abs_sy = sy.abs
  12.     # 横距离与纵距离相等的情况下
  13.     if abs_sx == abs_sy
  14.       #if sx > 0
  15.       # if sy > 0
  16.       # move_upper_left
  17.       # elsif sy < 0
  18.       # move_lower_left
  19.       # end
  20.      #elsif sx < 0
  21.      #  if sy > 0
  22.      #  move_upper_right
  23.      #elsif sy < 0
  24.      #  move_lower_right
  25.      #end
  26.      #end   
  27.      rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  28.     end
  29.     # 横侧距离长的情况下
  30.     if abs_sx > abs_sy
  31.       # 左右方向优先。向主角移动
  32.      # sx > 0 ? move_left : move_right
  33.       if sx > 0
  34.        if sy > 0
  35.        move_upper_left
  36.        elsif sy < 0
  37.        move_lower_left
  38.      else
  39.        move_left
  40.        end
  41.      else
  42.        if sy > 0
  43.        move_upper_right
  44.      elsif sy < 0
  45.        move_lower_right
  46.      else
  47.        move_right
  48.      end
  49.      end
  50.       if not moving? and sy != 0
  51.         sy > 0 ? move_up : move_down
  52.       end
  53.     # 竖侧距离长的情况下
  54.     else abs_sx < abs_sy
  55.       # 上下方向优先。向主角移动
  56.       #sy > 0 ? move_up : move_down
  57.       if sy > 0
  58.         if sx > 0
  59.           move_upper_left
  60.         elsif sx < 0
  61.           move_upper_right
  62.         else
  63.           move_up
  64.         end
  65.       else
  66.         if sx > 0
  67.        move_lower_left
  68.      elsif sx < 0
  69.        move_lower_right
  70.      else
  71.        move_down
  72.      end
  73.      end
  74.       if not moving? and sx != 0
  75.         sx > 0 ? move_left : move_right
  76.       end
  77.     end
  78.   end
复制代码
帮你写了个。。。
我爱66RPG,但我讨厌66.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部