gms2怎么实现攻击判定啊
gamemaker吧
全部回复
仅看楼主
level 4
由于我不想按下键就立刻产生攻击判定,而是想在攻击动作进行到某一个特定帧的时候,才进行攻击判定。所以我首先想到的是用广播消息来实现。
但是当我这么做了以后,我发现这样会有个离谱的问题。那就是当我进行攻击的时候,只要加了下面这段广播消息监听的对象,都会进行一次攻击判定。有没有什么办法能让对象只监听自己产生的广播消息啊。或者其他实现我想要的效果的方式[泪]
2024年04月03日 15点04分 1
level 9
你可以把攻击的动作贴图添加到同一个Sprite里,假设用这个Sprite的物体ID为xxx,你就if xxx.image=index=x…{…}来判定这个物体贴图位于第几帧。一个Sprite里,第一帧的image_index为0,第二帧为1,以此类推[滑稽]
2024年04月04日 02点04分 2
添加贴图的方法:先创建一个Sprite,然后编辑图像,弹出的那个窗口上面的贴图预览栏可以拖放东西,直接把你要放的贴图拖进去,再排序就行了[滑稽]
2024年04月04日 02点04分
@RR°C 原来如此,但是我还是有个疑问,就是广播消息能不能实现我要的这个效果呀,我看的教程里面有两三个似乎都是用的广播消息来做的。比如这个视频的P4:https://www.bilibili.com/video/BV1RN4y1y7mK/
2024年04月04日 06点04分
@secret丨小贱 我没用过,不清楚[笑尿]
2024年04月04日 09点04分
@RR°C 好吧,非常感谢[真棒]
2024年04月04日 16点04分
level 6
我只能算时间,先按照攻击动画判断出判定的在第几帧,然后根据这个帧数的时间来确定创造判定的警报事件的时间。
2024年04月08日 18点04分 4
好吧。我后来又找了很久,感觉还是只有算帧数这种方法靠谱点
2024年04月12日 11点04分
level 11
我是弄了个攻击特效实例,创建的时候用var_struct指定精灵,粒子发射器,大小,方向,判定第几帧出现,持续多久,每种伤害各含多少
然后在这个实例的创建事件里写个damaging=false,步事件里写个image_index介于判定帧范围中时,damaging=true
在enemy碰撞到攻击特效实例对象时,检测对方的damaging是否为true,如果是的话,切换状态机到state_damaged
2024年05月20日 23点05分 5
level 7
精灵不要默认播放,用计时器控制播放可以精确到帧进行处理。
2024年06月02日 10点06分 6
level 1
把帧上写出attack ,然后检测发消息的 帧
判定框是自己画框框,矩形,用交叉检测函数判定是否攻击到。挺复杂的。
2024年06月11日 13点06分 7
level 1
//创建玩家伤害
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);
}
}
}
[滑稽]你在找这个?
2024年06月11日 13点06分 8
对,就是这个,我之前试过直接用_element 去和id进行比较,但是没用,原来还需要用layer_instance_get_instance函数才行啊
2024年08月10日 08点08分
1