赞 | 352 |
VIP | 55 |
好人卡 | 9 |
积分 | 365 |
经验 | 117206 |
最后登录 | 2024-11-26 |
在线时间 | 10800 小时 |
Lv5.捕梦者
- 梦石
- 0
- 星屑
- 36457
- 在线时间
- 10800 小时
- 注册时间
- 2009-3-15
- 帖子
- 4815
|
本帖最后由 soulsaga 于 2016-2-13 16:34 编辑
那个...用事件事向事件移动脚本解決无视队友的问题不太好吧..这个好像只能指定走向指定的事件ID.吧? 队友事件ID每次离开当前地图再进就会各自+1..即从2000,2001,2002,变成2001,2002,2003所以追队友指定事件ID最后一定会出问题的
我也自己解決了无视队友问题..是根据论坛的大神给的答案我再自己修改了下得来的..
Game_Character3的def move_toward_player- # ● 接近主角
- #--------------------------------------------------------------------------
- def move_toward_player
- # 求得與主角的座標差值
- sx = @x - $game_player.x
- sy = @y - $game_player.y
- friendarray = []
- friendAX = []
- friendAY = []
- #$game_system.friend_event_id保存了所有队友事件ID的数组
- if $game_system.friend_event_id != []
- for i in $game_system.friend_event_id
- friend = $game_map.events[i]
- #返回坐标绝对值
- friendxy = (@x - friend.x).abs + (@y - friend.y).abs
- #往数组尾加入计算后的怪物与队友间的距离
- friendarray.push(friendxy)
- #数组记录所有队友的XY座标
- friendAX.push(friend.x)
- friendAY.push(friend.y)
- end
- #取得距离数组的最小值
- friendmin = friendarray.min
- #如果最小值与I号队友距离相等则靠近
- for i in 0..$game_system.friend_event_id.size - 1
- if friendmin == friendarray[i]
- friendx = friendAX[i]
- friendy = friendAY[i]
- end
- end
-
- if sx.abs + sy.abs > (@x-friendx).abs + (@y - friendy).abs
- sx = @x-friendx
- sy = @y - friendy
- end
- end
- # 座標相等情況下
- if sx == 0 and sy == 0
- return
- end
- # 求得差值的絕對值
- abs_sx = sx.abs
- abs_sy = sy.abs
- # 橫距離與縱距離相等的情況下
- if abs_sx == abs_sy
- # 隨機將邊數增加 1
- rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
- end
- # 橫側距離長的情況下
- if abs_sx > abs_sy
- # 左右方向優先。向主角移動
- sx > 0 ? move_left : move_right
- if not moving? and sy != 0
- sy > 0 ? move_up : move_down
- end
- # 豎側距離長的情況下
- else
- # 上下方向優先。向主角移動
- sy > 0 ? move_up : move_down
- if not moving? and sx != 0
- sx > 0 ? move_left : move_right
- end
- end
- end
复制代码 另外加入重复角色不是只要在人物仓库脚本的def add_actor(actor_id)那里把判断角色去掉不就可以了么.. |
-
r.jpg
(39.02 KB, 下载次数: 11)
|