0
votes

So far I am able to control my sprite's side to side movement with buttons in Cocos2d. I am now trying to incorporate a jump animation but I have absolutely no idea how to do this. I have tried one sample code which utilized the init method and combined to animations (jump up and jump down) but whenever I tried to move the sprite while it was jumping i got a SIGABRT error. Please note that I am very unexperienced with Cocos2d and walking me through the steps to make a successful jump animation would be greatly appreciated.

2
To get jump action , what have you used? Did you use any action?? Like CCJump? - Renaissance
You can get Jump Effect using CCJumpTo or CCJumpBy action. - Renaissance
@Renaissance This was my exact code: id jump_Up = [CCJumpBy actionWithDuration:1.0f position:ccp(0, 200) height:50 jumps:1]; id jump_Down = [CCJumpBy actionWithDuration:0.7f position:ccp(0,-200) height:50 jumps:1]; id seq = [CCSequence actions:jump_Up,jump_Down, nil]; [sprite runAction:seq]; - CompleteXcodeNoob
@Renaissance That code only allowed me to jump up and down without detecting hitting the ground or any other objects. It was a set animation that did't allow me to make the sprite move right or left or allow me to jump relative to the ground (which i haven't figured out how to do either). - CompleteXcodeNoob
code which you have given, in that the sprite will come back to its position with 1.7 seconds. - Renaissance

2 Answers

3
votes

CCJumpBy simulates a parabolic jump movement.

id jump_Up = [CCJumpBy actionWithDuration:1.0f position:ccp(0, 200) height:50 jumps:1];

Running the above jump_Up action will move the sprite's position by '0' distance along x axis and '200'units along y axis and will move the sprite along a parabolic path.

If you wish to move the sprite right or left while jumping. Try the following..

CGPoint newPosition = ccp(max(sprite.position.x + screenSize.width * 0.2f,screenSize.width), sprite.position.y);
id jumpAct = [CCJumpBy actionWithDuration:1.0f position:newPosition height:50 jumps:1];
[sprite runAction:jumpAct];
2
votes

Just a quick update - with the V3 release of Cocos2D, the method is now CCActionJumpBy. So it's something like this...

CCActionJumpBy *jump = [CCActionJumpBy actionWithDuration:1.0f position:ccp(0, 200) height:50 jumps:1];
[_yourSpriteObject runAction:jump];