Sprite的动画不更新物理

时间:2013-01-08 12:12:32

标签: cocos2d-iphone box2d-iphone

我使用Level Helper和SpriteHelper创建我的精灵,图像,关卡以及更重要的动画和物理。

注意,物理上我指的是你可以在用于碰撞检测的模拟器上看到的调试工具。

我创建了一名游泳运动员并为此添加了物理学。完成代码,以便物理跟随游泳者在游泳池移动时。我现在来为游泳者制作动画,让腿踢等等。现在,当我加载我的游戏时,只有动画的第一个精灵是物理的轮廓。所以我可以看到腿踢在游泳运动员身上,但物理的调试网格也没有动画。现在这不是一个问题,直到我的游泳运动员失去了他的腿(我知道奇怪的比赛)。我将动画改为现在没有腿的游泳者,但物理网格仍然显示腿部。所以任何与东西的碰撞仍然发生在腿部但不应该的地方。这有道理吗?

有没有办法在新动画上更新物理,还是我需要删除整个游泳者并画一个新游戏?

任何帮助都会很棒。谢谢

1 个答案:

答案 0 :(得分:0)

这是有道理的,因为你的精灵在两种状态下使用相同的box2d网格。如果你想在改变你的精灵之后有不同的碰撞行为,你应该分配另一个(较小的)网格体。

请注意,即使在cocos2d中,你的精灵仍然拥有与新动画相同的容器盒。

为了继续使用SpriteHelper功能,您可能需要创建2个不同的精灵体集:一个具有完整的身体,然后在“意外”之后用无腿精灵替换它。

现在,从游戏玩法来看,我认为无论如何都不应该对腿部造成任何碰撞。因为它们正在移动,玩家不会觉得让它们不碰撞是很奇怪的。你可以使用没有腿的网状体,并将它用于两个精灵。除非您想要将不同的碰撞作为游戏功能(例如让玩家选择剪腿以适应较小的洞穴等)