在 SpriteBuilder 中使对象出现在第 N 帧而不是第 0 帧

Make an object appear in frame N and not frame 0 in SpriteBuilder

在 SpriteBuilder 中,每个对象都从第 0 帧开始。

我有一些物体会从天上掉下来,但我希望它们的下落动画(重力物理)在场景中稍后开始,而不是从 0 开始。

我可以让对象存在于特定帧吗? (即在对象的第一个关键帧之前插入空帧),或者我可以让对象在特定帧之后对物理重力进行排队吗?

蒂亚

int frameNum = 5;

CCSpriteFrame* theframe = ((CCAnimationFrame*)[animation.frames objectAtIndex:frameNum]).spriteFrame;

CCSprite* newSprite = [CCSprite spriteWithSpriteFrame:theframe];

这将创建一个从动画的第五帧开始的新精灵。

你想做的事情可以通过 Spritebuilder 和代码的组合来完成。不可能 animate/toggle Spritebuilder 时间轴中的任何物理属性,但您可以设置自己的回调来实现它。要在时间线中添加回调,您按住 alt/option+左键单击 SB 时间线中的回调字段,然后双击小方块以设置选择器。要隐藏对象直到您希望它显示,您可以添加一个 'Visible' 关键帧:将光标设置在您希望对象显示的时间并按 'v'。

所以,为了做你想做的事,我会取消选中 SBs "Item physics"-tab 中的“受重力影响”复选框。(显然,这将使物体不会掉落)然后在某个特定时间point 使对象可见(如果你隐藏了它)并回调到这样的东西:

func toggleGravityCallBack() {
  yourObject.physicsBody.affectedByGravity = true
}

希望对您有所帮助!