gamemaker吧 关注:13,587贴子:94,327
  • 11回复贴,共1

gms2怎么实现攻击判定啊

只看楼主收藏回复

由于我不想按下键就立刻产生攻击判定,而是想在攻击动作进行到某一个特定帧的时候,才进行攻击判定。所以我首先想到的是用广播消息来实现。
但是当我这么做了以后,我发现这样会有个离谱的问题。那就是当我进行攻击的时候,只要加了下面这段广播消息监听的对象,都会进行一次攻击判定。有没有什么办法能让对象只监听自己产生的广播消息啊。或者其他实现我想要的效果的方式


IP属地:四川1楼2024-04-03 23:48回复
    你可以把攻击的动作贴图添加到同一个Sprite里,假设用这个Sprite的物体ID为xxx,你就if xxx.image=index=x…{…}来判定这个物体贴图位于第几帧。一个Sprite里,第一帧的image_index为0,第二帧为1,以此类推


    IP属地:江苏来自iPhone客户端2楼2024-04-04 10:49
    收起回复
      我只能算时间,先按照攻击动画判断出判定的在第几帧,然后根据这个帧数的时间来确定创造判定的警报事件的时间。


      IP属地:广东4楼2024-04-09 02:21
      收起回复
        我是弄了个攻击特效实例,创建的时候用var_struct指定精灵,粒子发射器,大小,方向,判定第几帧出现,持续多久,每种伤害各含多少
        然后在这个实例的创建事件里写个damaging=false,步事件里写个image_index介于判定帧范围中时,damaging=true
        在enemy碰撞到攻击特效实例对象时,检测对方的damaging是否为true,如果是的话,切换状态机到state_damaged


        IP属地:江西来自Android客户端5楼2024-05-21 07:31
        回复
          精灵不要默认播放,用计时器控制播放可以精确到帧进行处理。


          IP属地:陕西来自Android客户端6楼2024-06-02 18:50
          回复
            把帧上写出attack ,然后检测发消息的 帧
            判定框是自己画框框,矩形,用交叉检测函数判定是否攻击到。挺复杂的。


            IP属地:宁夏7楼2024-06-11 21:36
            回复
              //创建玩家伤害
              var _data = event_data[? "event_type"];
              var _msg = event_data[? "message"];
              var _element = event_data[? "element_id"];
              //检查谁在召唤
              if(layer_instance_get_instance(_element) == id)
              {
              //发送信息的人
              if(_data == "sprite event")
              {
              //检查是否进入攻击状态
              if(_msg == "attack")
              {
              //创建攻击判定框
              var _x1, _y1, _x2, _y2;
              //清除精灵原点的位置
              _x1 = (-sprite_xoffset + sprite_get_bbox_left(sprite_index)) * face;
              _y1 = -sprite_yoffset + sprite_get_bbox_top(sprite_index);
              _x2 = (- sprite_xoffset + sprite_get_bbox_right(sprite_index)) * face;
              _y2 = -sprite_yoffset + sprite_get_bbox_bottom(sprite_index);
              my_damage = new Damage(_x1, _y1, _x2, _y2, id);
              }
              }
              }
              你在找这个?


              IP属地:宁夏8楼2024-06-11 21:38
              回复