设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 802|回复: 1
打印 上一主题 下一主题

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

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-10-16
帖子
450
跳转到指定楼层
1
发表于 2009-4-10 20:26:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
2
发表于 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.
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-9 02:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表