如何在 GameMaker Studio 中当炸弹爆炸时触发角色的毁灭动画?

问题描述 投票:0回答:1

我正在使用 GameMaker Studio 开发马里奥兄弟克隆,并且添加了一个独特的功能,马里奥可以投掷炸弹来击败敌人。虽然我已经成功实现了炸弹投掷机制,但我在动画和交互方面遇到了困难 - 具体来说,如何在敌人被爆炸击中时触发毁灭动画。

场景很简单:马里奥扔了一个炸弹,炸弹有一个计时器,当达到零时,它就会爆炸。爆炸半径内的任何敌人都应该播放毁灭动画,然后从游戏中移除。我已准备好动画,但需要指导如何检测炸弹爆炸与敌人之间的碰撞,以及如何为受影响的敌人播放破坏动画。

任何人都可以提供见解或指出 GameMaker Studio 中正确的功能或方法来检测爆炸对敌人的影响并触发适当的动画吗?任何有关逻辑或代码片段的帮助都将非常有帮助。

到目前为止,我已经实现了炸弹投掷机制,马里奥可以投掷炸弹,并在设定的时间后爆炸。我在 GameMaker Studio 中使用了警报来管理炸弹爆炸的倒计时。爆炸后,我尝试在炸弹周围的影响区域 (AoE) 中使用 instance_place 函数检查与敌人的碰撞情况。这是我在炸弹爆炸警报 [0] 事件中使用的代码的简化版本:

// Explosion effect
instance_create_layer(x, y, "Effects", obj_Explosion);

// Check for enemies in the explosion radius
var _explosionRadius = 64;
var _enemy = instance_place(x, y, obj_Enemy);

if (_enemy != noone && point_distance(x, y, _enemy.x, _enemy.y) <= _explosionRadius) {
    // Intended to trigger the destruction animation for the enemy
    with (_enemy) {
        sprite_index = spr_enemy_destroyed;
        image_index = 0;
        alarm[1] = room_speed * 0.5; // Attempt to remove the enemy after 0.5 seconds
    }
}

我预计当炸弹爆炸时,64 像素半径内的任何敌人都会立即开始播放其破坏动画 (spr_enemy_destroyed),然后在短暂延迟后从游戏中移除。然而,动画并未按预期触发,并且如果敌人位于半径边缘,有时不会对爆炸做出反应。此外,敌人并没有被一致地移除,这表明我的方法或理解存在缺陷。

我正在寻找有关如何正确检测爆炸半径内的所有敌人并确保破坏动画在将其从游戏中移除之前可靠播放的指导。 GameMaker Studio 中是否有更有效的方法来处理此问题,或者我是否错过了碰撞检测和动画触发过程中的关键步骤? `

game-development game-maker
1个回答
0
投票

我认为

// Check for enemies in the explosion radius
下面的所有内容都比炸弹效果警报更适合
obj_Explosion
的步骤事件。

这是因为警报只会在触发时被访问一次,因此只有在爆炸触发的初始时刻范围内时,敌人才会对其做出反应。

至于你的敌人。存在销毁事件,当对象即将从游戏中移除时会触发该事件。此事件非常适合为敌人放置爆炸效果。您还可以使用它在敌人已被移除时出现效果。 (例如,你的

spr_enemy_destroyed
也可以是持续0.5秒的效果),在效果结束之前移除敌人,意味着它不会以负面的方式与玩家或其他物体互动。

© www.soinside.com 2019 - 2024. All rights reserved.