cocos2d-iphone v3(花栗鼠):如何通过施加冲动或力来左右移动CCSprite?

时间:2014-02-18 15:26:15

标签: objective-c cocos2d-iphone chipmunk

我决定开始学习游戏编程,我选择了cocos2d V3作为我的第一个2D游戏引擎。据我了解,cocos2d-iphone v3配备了花栗鼠作为物理引擎。

我设法创建一个纵向应用程序,它在屏幕的左侧到右侧有一个平台,顶部有一个对象(Box)。

Platform和Box是附带CCPhysicsBody的CCSprite。

当我触摸屏幕右侧时,我想将此框推向左侧,当我触摸屏幕左侧时将其向右推。盒子不应该跳,而只是向左或向右推。

从cocos2d v3文档中查看,我发现了这些方法:CCPhyicsBody

- (void)applyAngularImpulse:(CGFloat)impulse
- (void)applyForce:(CGPoint)force
- (void)applyForce:(CGPoint)force atLocalPoint:(CGPoint)point
- (void)applyForce:(CGPoint)force atWorldPoint:(CGPoint)point
- (void)applyImpulse:(CGPoint)impulse
- (void)applyImpulse:(CGPoint)impulse atLocalPoint:(CGPoint)point
- (void)applyImpulse:(CGPoint)impulse atWorldPoint:(CGPoint)point
- (void)applyTorque:(CGFloat)torque

通过使用applyImpulse并传递触摸位置CGPoint,我设法让盒子跳了一下。但我的要求是让我的盒子向左或向右移动而不会跳跃。

有人可以向我解释我应该使用哪种方法?该方法的参数应该是什么?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

  

通过使用applyImpulse并传递触摸位置CGPoint,我设法让盒子跳了一下。

这就是问题所在。使用applyImpulse是正确的方法,但是您需要提供脉冲的方向作为CGPoint参数。您不希望将触摸位置用作脉冲方向。

要仅向左侧施加脉冲,您需要为脉冲方向创建一个新的CGPoint,此点的y值应为0:

CGPoint impulse = ccp(-10.f, 0.f);

然后将这一点传递给方法。