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

Project1

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

[已经过期] 事件向事件移动,当目标消失后就报错

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

跳转到指定楼层
1
发表于 2016-2-13 02:19:20 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我的队友是事件,我的敌人使用事件向事件移动脚本来索定队友。
我按M可以切换到队友,自己变身事件队友
我死亡后会自动切换成队友。
我被打死后,切换到队友了,然后就报错说X没有定义。



队友切换脚本


事件向事件移动脚本
[/fold]

Lv5.捕梦者

梦石
0
星屑
36437
在线时间
10798 小时
注册时间
2009-3-15
帖子
4814
2
发表于 2016-2-13 10:10:55 | 只看该作者
本帖最后由 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, 下载次数: 10)

r.jpg

点评

重复队友不好用。一个死了全都死了。他是按照数据库ID一对一的。修改要改很多地方  发表于 2016-2-13 20:53
不是,无视队友还要改其他的。我这个是这个问题  发表于 2016-2-13 20:52
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 07:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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