在UIPanGestureRecognizer函数中调用时,ApplyLinearImpulse不起作用

时间:2011-07-22 20:38:23

标签: iphone objective-c cocos2d-iphone box2d

我正在使用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);
    }      
}

1 个答案:

答案 0 :(得分:1)

您在handlePanFrom中应用的力总是b2Vec2(30,30)。它永远不会随着您当前的代码而改变,因此不会朝着您的方向发展。