首先是一点背景知识。我正在使用带有Objective C包装器的Cocos2D作为Chipmunk作为物理引擎。我有一个名为actionNode的PhysicsNode。在actionNode上我有一个物理体,名为runningFox。 actionNode和runningFox以相反的方向滚动,以给出一个无尽的跑步者的概念。它在更新方法中完成,如下所示:
-(void)update:(CCTime)delta{
runningFox.position=ccp(runningFox.position.x+actionNodeScrollSpeed*delta, runningFox.position.y);
actionNode.position=ccp(actionNode.position.x-actionNodeScrollSpeed*delta, actionNode.position.y);
}
当我向上滑动时,只需使用CCActionJumpBy动作即可将runningFox跳起来。现在,当它在空中并向下滑动时,我需要它快速回到地面,而不是正常着陆,这是由重力自动处理的。虽然它是多么好的练习可以争论,为此目的我尝试过这种方法:
[runningFox.physicsBody applyImpulse:ccp(0, 300) atLocalPoint:ccp(0.5, 0.5)];
但我没有看到任何影响。但是,如果我像这样反转x和y值
[runningFox.physicsBody applyImpulse:ccp(300, 0) atLocalPoint:ccp(0.5, 0.5)];
身体被迫前进。因此,由于某种原因,脉冲应用于x轴,但不应用于y轴。那么我做错了什么?
老实说,我已经阅读了文档并且没有完全了解这些参数对该方法的意义。所以,我不是100%确定我应该通过什么来获得我需要的东西