我正在使用Box2d和Cocos2d来开发iPhone游戏。我在屏幕中央有一个球,使用固定装置等创建一个简单的边界。我想要做的是添加功能,以便用户可以“刷”球以施加力并基本上在屏幕上轻弹。< / p>
我使用以下代码来实现此目的:
b2Vec2 force = b2Vec2(30, 30);
_body->ApplyLinearImpulse(force, _ballBodyDef->position);
如果我在初始化功能期间施加线性脉冲,则球会以正确的方向射出,并按照应有的方式行动。但是,如果我把它放到用户完成手势时调用的handlePan
函数中,它什么都不做。以下是该函数的完整代码:(请注意,NSLog
会写出正确的信息。
- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded) {
CGPoint velocity = [recognizer velocityInView:recognizer.view];
NSLog(@"Vel: %f, newPos: %f",velocity.x,velocity.y);
b2Vec2 force = b2Vec2(30, 30);
_body->ApplyLinearImpulse(force, _ballBodyDef->position);
}
}
答案 0 :(得分:1)
您在handlePanFrom中应用的力总是b2Vec2(30,30)。它永远不会随着您当前的代码而改变,因此不会朝着您的方向发展。