ioscocos2d-iphonespritebuilder

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


In SpriteBuilder, every object starts at frame 0.

I have some objects that will fall from the sky, but I want their falling animation (physics with gravity) to begin later in the scene, and not at 0.

Can I either have the objects exist at a certain frame? (i.e. insert empty frames before the object's first keyframe), or can I have the objects queue the physics gravity after a certain frame?

tia


Solution

  • What you want to do can be done with a mix of Spritebuilder and code. It's not possible to animate/toggle any of the physics attributes in the Spritebuilder timeline, but you can set your own callbacks to achieve it. To add a callback in the timeline, you hold alt/option+left click in the callback field in the SB timeline and then double click the little square to set the selector. To hide an object until you want it to show up, you can add a 'Visible' keyframe: set the cursor at the time you want the object to show and press 'v'.

    So, to do what you want I'd uncheck the 'Affected by gravity" checkbox in SBs "Item physics"-tab. (Obviously, this will make the object to not fall down) Then at a certain point make the object visible (if you've hidden it, that is) and make a callback to something like this:

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

    Hope this helps!