Project1

标题: 关于用事件做射击效果时碰到的问题 [打印本页]

作者: POPO70114    时间: 2014-12-23 21:07
标题: 关于用事件做射击效果时碰到的问题
我设定了子弹的地图X,Y座标

和怪物的地图X,Y座标

事件设定是子弹的XY座标与怪物XY座标重叠就让怪物受伤损血

并且子弹击中怪物后会消失

怪物用并行处理一直往玩家的方向移动



子弹攻击静止的怪物会有效果

但攻击移动的怪物时偶尔会出现子弹直接穿过怪物的情况发生

我想是怪物从A点移动到B点之间的动作时

系统无法判定子弹XY座标有无重叠到怪物XY座标

所以才会直接穿过

但这种问题我无法解决

有没有高手可替小的解惑呢?
作者: 翻滚牛宝宝    时间: 2014-12-23 21:43
  1. #==============================================================================

  2. # ☆ Custom Adventure 踩踏/置物判断

  3. # -- Last Updated: 2014.6.3

  4. # -- by Moy

  5. # -- 转载请保留以上信息

  6. #==============================================================================

  7. #   本脚本判断一个在人物下层的事件是否被其他事件/角色踩踏

  8. #   对本事件使用只需要在分歧脚本中使用get_character(0).stepped_on?即可。

  9. #   判断别的事件请自行获取实例后使用。

  10. #==============================================================================

  11. # ■ Game_Event

  12. #==============================================================================

  13. class Game_Event < Game_Character

  14.   #--------------------------------------------------------------------------

  15.   # ● 判断本事件是否被其他事件/角色踩踏

  16.   #--------------------------------------------------------------------------

  17.   def stepped_on?

  18.     stepped_by_events?(@x,@y) #|| stepped_by_player_characters?(@x, @y)

  19.   end
  20.   
  21.   def stepped_on1?

  22.     stepped_by_events?(@x,@y) || stepped_by_player_characters?(@x, @y)

  23.   end

  24.   #--------------------------------------------------------------------------

  25.   # ● 判断某位置是否被其他事件踩踏

  26.   #--------------------------------------------------------------------------

  27.   def stepped_by_events?(x, y)

  28.     $game_map.events_xy_nt(x, y).any? do |event|

  29.       event.normal_priority?

  30.     end

  31.   end

  32.   #--------------------------------------------------------------------------

  33.   # ● 判断某位置是否被主控角色踩踏

  34.   #--------------------------------------------------------------------------

  35.   def stepped_by_player_characters?(x, y)

  36.     @priority_type == 0 && $game_player.collide?(x, y)

  37.   end

  38. end
复制代码
你可以用这个试一试 原地址我找不到了 设置子弹在下方 子弹被压到的话 开启开关 子弹消失 然后怪物扣血
作者: H·H·Y    时间: 2014-12-23 22:21
LZ您用的是脚本还是事件……
作者: taroxd    时间: 2014-12-24 12:29
本帖最后由 taroxd 于 2014-12-24 12:34 编辑

可以在【分支条件-脚本】中通过 get_character(事件ID).moving? 来判断事件是否在移动中

用 get_character(事件ID).real_x 和 get_character(事件ID).real_y 获取事件在地图上真实的坐标(应该是浮点数)
用 get_character(事件ID).screen_x 和 get_character(事件ID).screen_y 获取事件在画面上的坐标




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