iphone - example - uipangesturerecognizer swift 4



ApplyLinearImpulse funktioniert nicht, wenn es innerhalb der UIPanGestureRecognizer-Funktion aufgerufen wird (1)

Ich benutze Box2d und Cocos2d, um ein iPhone-Spiel zu entwickeln. Ich habe einen Ball in der Mitte des Bildschirms mit einer einfachen Grenze mit Fixtures usw. erstellt. Was ich tun möchte, ist die Funktionalität hinzufügen, so dass ein Benutzer den Ball "wischen" kann, um Kraft anzuwenden und im Grunde über den Bildschirm streichen.

Ich verwende den folgenden Code, um dies zu erreichen:

b2Vec2 force = b2Vec2(30, 30);
_body->ApplyLinearImpulse(force, _ballBodyDef->position);

Wenn ich während der Init-Funktion einen linearen Impuls anwende, feuert der Ball in die richtige Richtung und verhält sich so, wie er sollte. Es macht jedoch nichts, wenn ich es in die handlePan Funktion handlePan , die aufgerufen wird, wenn eine Geste vom Benutzer ausgeführt wird. Hier ist der vollständige Code für die Funktion: (Beachten Sie, dass das NSLog die richtigen Informationen 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);
    }      
}

Die Kraft, die Sie in handlePanFrom anwenden, ist immer b2Vec2 (30, 30). Es wird sich niemals mit Ihrem derzeitigen Code ändern und wird sich daher nicht in Ihre Richtung bewegen.