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
# ● 接近主角
#--------------------------------------------------------------------------
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, 下载次数: 3)
下载附件
保存到相册
2016-2-13 16:27 上传
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1