Project1

标题: 关于一个ARPG带宠物攻击的效果 [打印本页]

作者: 兔毛鹿    时间: 2009-6-3 17:38
标题: 关于一个ARPG带宠物攻击的效果
角色带一个宠物,平时为接近主角,假设地图中1号~10号事件是敌人,并行处理当1号~10号事件中某一个与宠物事件的坐标差绝对值小于5,宠物事件就自动接近敌人事件攻击,那么如何让宠物事件自动接近敌人事件呢?? [LINE]1,#dddddd[/LINE]此贴于 2009-6-9 5:01:10 被版主darkten提醒,请楼主看到后对本贴做出回应。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: TLF    时间: 2009-6-4 05:40
顶一下,我也求此问题解答……
作者: SeRiKa    时间: 2009-6-7 21:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: 魔幻预言者    时间: 2009-6-8 01:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: qqp987987    时间: 2009-6-8 02:42
提示: 作者被禁止或删除 内容自动屏蔽
作者: ★_茄孓    时间: 2009-6-8 02:53
范例:
http://rpg.blue/upload_program/d ... ect60_124829740.rar

在main前放上该脚本:
  1. class Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 接近某事件
  4.   #--------------------------------------------------------------------------
  5.   def move_toward_events(id)
  6.     # 求得与主角的坐标差
  7.     sx = @x - $game_map.events[id].x
  8.     sy = @y - $game_map.events[id].y
  9.     # 坐标相等情况下
  10.     if sx == 0 and sy == 0
  11.       return
  12.     end
  13.     # 求得差的绝对值
  14.     abs_sx = sx.abs
  15.     abs_sy = sy.abs
  16.     # 横距离与纵距离相等的情况下
  17.     if abs_sx == abs_sy
  18.       # 随机将边数增加 1
  19.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  20.     end
  21.     # 横侧距离长的情况下
  22.     if abs_sx > abs_sy
  23.       # 左右方向优先。向主角移动
  24.       sx > 0 ? move_left : move_right
  25.       if not moving? and sy != 0
  26.         sy > 0 ? move_up : move_down
  27.       end
  28.     # 竖侧距离长的情况下
  29.     else
  30.       # 上下方向优先。向主角移动
  31.       sy > 0 ? move_up : move_down
  32.       if not moving? and sx != 0
  33.         sx > 0 ? move_left : move_right
  34.       end
  35.     end
  36.   end
  37. end
复制代码


以上其他效果都达到的话,让某事件接近某事件应该可以用:

假设  敌人事件id为x

在宠物事件并行处理 写上脚本
$game_map.events[@event].move_toward_events(x)
这样就可以让宠物事件接近敌人事件了
[LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 632808263    时间: 2009-10-27 05:26
好东西收下了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1