Ich habe diese gesucht und ich denke, es muss ein Parameter sein, um das zu beheben, aber ich habe es nicht gefunden.SpriteKit Knoten bleiben an den Kanten der Szene/nicht springen
Ich habe eine Szene in SpriteKit, wo ich einige Kreise/Bälle umherspringen lassen und jede Geschwindigkeit beibehalten möchte, die sie auf unbestimmte Zeit haben. Sie sollten von den Rändern der Szene abprallen.
Dies funktioniert, wenn sie sich schnell genug bewegen oder in einem ziemlich scharfen Winkel treffen, aber wenn sie langsamer gehen und in die Nähe der Kante kommen, bewegen sie sich (was gut ist) aber sie " Stick "an den Rändern. Dieses Kleben ist was ich nicht will. Sie sollten sich erholen, auch wenn sie sehr langsam gehen.
die Ränder einzurichten, habe ich:
SKPhysicsBody *borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody = borderBody;
self.physicsBody.friction = 0.0;
self.physicsBody.restitution = 1.0;
self.physicsBody.linerDamping = 0.0;
self.physicsBody.angularDamping = 0.0;
self.physicsBody.affectedByGravity = NO;
Und auf den Kreis Knoten, ich habe ähnliche Einstellungen, wie:
ball.usesPresciseCollisionDetection = YES;
ball.dynamic = YES;
ball.restitution = 1.0;
ball.linearDamping = 0.0;
ball.angularDamping = 0.0;
ball.friction = 0.0;
ich bei Null, um die Schwerkraft in meiner Szene haben. Ich füge den Knoten einen Impuls hinzu und sie beginnen zu hüpfen. Es scheint sehr nahe zu sein, wenn Dinge herumspringen, aber wenn sich dann welche langsam bewegen und in einem flachen Winkel eindringen, "umarmen" sie die Kanten. Ich werde versuchen, eine Abbildung unten zur Veranschaulichung zu verwenden.
http://i.imgur.com/Rpr7luY.png
Ich habe mit vielen der PhysicsBody Einstellungen versucht zu spielen, kann aber nicht die Dinge kleben zu stoppen.
Danke!
wahrscheinlich Nebeneffekt der Physik Simulation Ungenauigkeiten. Versuchen Sie es mit allowRotation aus. Wenn das nicht hilft, müssen Sie vielleicht mit diesem Verhalten leben. – LearnCocos2D
Danke für den Gedanken. Ich habe versucht, allowRotation ein- und auszuschalten. Die Objekte neigen immer noch dazu, an den Kanten zu haften, anstatt bei langsamer Bewegung zu springen. Ich postete hier ein kurzes Video, das dies in Aktion zeigt: [link] (http://youtu.be/TFnBvsSs6Ak) – Jim
Reibung auf Null setzen Reibung verhindert sie an den Rändern Prellen oder Sie können contact.collisionImpulse auf didBeginContact Funktion und Anwenden und wenig Kraft oder Impuls auf jede Kante Kollision – dragoneye