Project1

标题: 事件向事件移动,当目标消失后就报错 [打印本页]

作者: yang1zhi    时间: 2016-2-13 02:19
标题: 事件向事件移动,当目标消失后就报错
我的队友是事件,我的敌人使用事件向事件移动脚本来索定队友。
我按M可以切换到队友,自己变身事件队友
我死亡后会自动切换成队友。
我被打死后,切换到队友了,然后就报错说X没有定义。



队友切换脚本


事件向事件移动脚本
[/fold]
作者: soulsaga    时间: 2016-2-13 10:10
本帖最后由 soulsaga 于 2016-2-13 16:34 编辑

那个...用事件事向事件移动脚本解決无视队友的问题不太好吧..这个好像只能指定走向指定的事件ID.吧? 队友事件ID每次离开当前地图再进就会各自+1..即从2000,2001,2002,变成2001,2002,2003所以追队友指定事件ID最后一定会出问题的

我也自己解決了无视队友问题..是根据论坛的大神给的答案我再自己修改了下得来的..
Game_Character3的def move_toward_player
  1.   # ● 接近主角
  2.   #--------------------------------------------------------------------------
  3.   def move_toward_player
  4.     # 求得與主角的座標差值
  5.     sx = @x - $game_player.x
  6.     sy = @y - $game_player.y
  7.     friendarray = []
  8.     friendAX = []
  9.     friendAY = []
  10. #$game_system.friend_event_id保存了所有队友事件ID的数组
  11.     if $game_system.friend_event_id != []
  12.     for i in $game_system.friend_event_id
  13.       friend = $game_map.events[i]
  14.       #返回坐标绝对值
  15.       friendxy = (@x - friend.x).abs + (@y - friend.y).abs
  16.       #往数组尾加入计算后的怪物与队友间的距离
  17.       friendarray.push(friendxy)
  18.       #数组记录所有队友的XY座标
  19.       friendAX.push(friend.x)
  20.       friendAY.push(friend.y)
  21.       end
  22.       #取得距离数组的最小值
  23.       friendmin = friendarray.min
  24.       #如果最小值与I号队友距离相等则靠近
  25.       for i in 0..$game_system.friend_event_id.size - 1
  26.       if friendmin == friendarray[i]
  27.       friendx = friendAX[i]
  28.       friendy = friendAY[i]
  29.     end
  30.     end
  31.    
  32.     if sx.abs + sy.abs > (@x-friendx).abs + (@y - friendy).abs
  33.       sx = @x-friendx
  34.       sy = @y - friendy
  35.     end
  36.     end

  37.     # 座標相等情況下
  38.     if sx == 0 and sy == 0
  39.       return
  40.     end
  41.     # 求得差值的絕對值
  42.     abs_sx = sx.abs
  43.     abs_sy = sy.abs
  44.     # 橫距離與縱距離相等的情況下
  45.     if abs_sx == abs_sy
  46.       # 隨機將邊數增加 1
  47.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  48.     end
  49.     # 橫側距離長的情況下
  50.     if abs_sx > abs_sy
  51.       # 左右方向優先。向主角移動
  52.       sx > 0 ? move_left : move_right
  53.       if not moving? and sy != 0
  54.         sy > 0 ? move_up : move_down
  55.       end
  56.     # 豎側距離長的情況下
  57.     else
  58.       # 上下方向優先。向主角移動
  59.       sy > 0 ? move_up : move_down
  60.       if not moving? and sx != 0
  61.         sx > 0 ? move_left : move_right
  62.       end
  63.     end
  64.   end
复制代码
另外加入重复角色不是只要在人物仓库脚本的def add_actor(actor_id)那里把判断角色去掉不就可以了么..

r.jpg (39.02 KB, 下载次数: 3)

r.jpg





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