gpt4 book ai didi

javascript - 仅播放动画 spritesheet 的第一帧

转载 作者:行者123 更新时间:2023-11-30 16:09:20 25 4
gpt4 key购买 nike

尝试在我的游戏中添加爆炸动画,但由于某种原因只播放 Sprite 的第一帧。 Spritesheet 在预加载器中加载。

这是调用动画的函数

function asteroidCollisionHandler(player, asteroid){

live = lives.getFirstAlive();

if (live)
{
live.kill();
}

explosion = explosions.getFirstExists(false);
explosion.reset(player.body.x, player.body.y);

explosion.play('explosion', 30, false, false);

if (lives.countLiving() < 1)
{
player.kill();
}

}

创建创建爆炸组的函数

explosions = game.add.group();
explosions.createMultiple(30, 'explosion');

预加载器

this.load.spritesheet('explosion', 'images/explode.png', 128, 128, 16);

最佳答案

explosions.createMultiple() 行只创建了 30 个 Sprite ,您仍然需要为每个 Sprite 显式添加动画。您可以添加带有名称的动画,以及可选的帧等。顺便说一句,我建议为组和动画使用不同的名称以避免混淆,所以像这样:

// initialise animations in the Create() function:
for (var i = 0; i < grpexplosions.children.length; i++) {
grpexplosions.children[i].animations.add('animexplode', [0,1,2,3], 30, true, false);
//grpexplosions.children[i].animations.add('animexplode'); // alternatively, leave frames null to use all frames
};

// and then when you need one:
explosion = grpexplosions.getFirstExists(false);
explosion.play('animexplode', 30, false, false);

顺便说一句,你也可以使用 group.callAll() 作为快捷方式而不是 for 循环,所以像这样:

var framesIndex = [0,1,2,3]; // or names
grpexplosions.callAll('animations.add', 'animations', 'animexplode', framesIndex, 30, true, false);
//grpexplosions.callAll('animations.add', 'animations', 'animexplode'); // frames optional, this will simply add all frames

关于javascript - 仅播放动画 spritesheet 的第一帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36507391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com