查看: 1924|回复: 1

[已经解决] 为什么我这段脚本里shoot(176)这段会被连续执行

[复制链接]
梦石
0
星屑
12161
在线时间
4435 小时
注册时间
2014-4-11
回帖
5616

开拓者

发表于 2016-2-8 22:22:47 | 显示全部楼层 |阅读模式

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

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

×
SHOOT执行后不是应该执行等待120贞吗

[pre lang="ruby"]def move_type_toward_event(event_id, sight = 20, ai = 6)
    # 指定自身的情况下不执行动作
    if event_id == self.id
      return
    end
    # 求得与主角坐标的差
    sx = @x - $game_map.events[event_id].x
    sy = @y - $game_map.events[event_id].y
    # 求得差的绝对值
    abs_sx = sx > 0 ? sx : -sx
    abs_sy = sy > 0 ? sy : -sy
    # 如果方圆超过了视野
    if abs_sx ** 2 + abs_sy ** 2 >= sight ** 2
      return
    end
    if abs_sx <= 1 and abs_sy <= 1
      shoot(176)
      @wait_count = 120
    end
        # 横距离与纵距离相等的情况下
    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[/pre]

评分

参与人数 1星屑 +35 收起 理由
RyanBern + 35 手动认可奖励

查看全部评分

梦石
0
星屑
3905
在线时间
1972 小时
注册时间
2013-1-3
回帖
9146
发表于 2016-2-9 16:21:04 | 显示全部楼层
只把@wait_count代入一个值是没有用的
比如我妈妈给我120元钱,我不花,那我永远有120元钱
需要在update里把这个变量-1,当这个变量为0时,再进行以下内容

点评

可以了,我找到解决方法了。用 update_sensor和@stop_count = -40  发表于 2016-2-9 20:10
这样的话不就所有共用一个@wait_count了吗,要是不同的事件用@wait_count不就不能不同停顿了吗。不像事件里面的等待是可以每个事件分开停顿的  发表于 2016-2-9 19:53

评分

参与人数 1星屑 +150 收起 理由
RyanBern + 150 认可答案

查看全部评分

《宿愿·寻剑篇》正式版已经发布!快去看看!点击进入论坛发布贴
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部