【发布时间】:2015-02-24 18:43:43
【问题描述】:
在 cocos2d-spritebuilder 3.4 中,我创建了我的物理世界和我的播放器,就像许多官方示例一样。
self.sprite.physicsBody = [CCPhysicsBody bodyWithCircleOfRadius:10 andCenter:self.anchorPoint];
self.sprite.physicsBody.type = CCPhysicsBodyTypeDynamic;
etc...
所以,当我尝试将精灵向右移动时,例如使用
[self.sprite.physicsBody applyImpulse: CGPointMake(32,0)];
我的应用程序出现崩溃报告:
Aborting due to Chipmunk error: Body's velocity is invalid.
Failed condition: v.x == v.x && v.y == v.y
Source:.../Source/libs/cocos2d-iphone/external/Chipmunk/src/cpBody.c:106
花栗鼠来源有:
-(void)applyImpulse:(CGPoint)impulse { _body.velocity = cpvadd(_body.velocity, cpvmult(CCP_TO_CPV(impulse), 1.0f/_body.mass));}
所以,我知道 MASS 默认设置为 1.0f,但我想尝试手动设置此值..):
self.sprite.physicsBody.mass = 1.0f
同样的错误,同样的结果...... 但如果我尝试设置:
self.sprite.physicsBody.body.mass = 1.0f
效果很好。 那么,这两个参数有什么区别? 为什么 applyImpulse 只取 body.mass?
【问题讨论】:
-
虽然我不是物理学家,但很明显,您将速度与脉冲混淆了(假设您在
applyImpulse通话中使用了速度)。我预计您将需要尝试不同的冲动值,直到身体开始按照您的预期行事(可能会根据用户行为随时间改变冲动值)。从阅读this开始。 -
先生,问题不在于冲动。游戏运行良好,我的问题很清楚,参考花栗鼠的资料,关于质量的两个变量而不是一个。
标签: objective-c cocos2d-iphone chipmunk spritebuilder