2016-07-29 20 views
0

Mein Spiel ist ein Sidescroller, so hat der Held die konstante Geschwindigkeit, die auf seine Geschwindigkeit jedes Update eingestellt ist. Wenn ich einen Boden mit mehreren "Boxen" formiere, stoppt Hero dort, wo der erste aufhört und der zweite beginnt. Sie haben die gleiche Größe und sind auf der gleichen y-Achse, warum passiert das?SpriteKit Hero Bewegung Choke auf Knoten Verbindung

PhysicsBody von Hero:

 self.physicsBody = SKPhysicsBody(rectangleOfSize: rect.size, center: center) 
     self.physicsBody?.usesPreciseCollisionDetection = true 
     self.physicsBody?.allowsRotation = false 
     self.physicsBody?.restitution = 0 
     self.physicsBody?.categoryBitMask = Category.Hero 
     self.physicsBody?.collisionBitMask = Category.Floor | Category.Hero | Category.Glass | Category.Obstacle 
     self.physicsBody?.contactTestBitMask = Category.Obstacle | Category.Glass | Category.Collision | Category.Doors | Category.EBullet | Category.Enemy | Category.Explosion | Category.Plyuha | Category.Slime 

PhysicsBody für Hindernis:

self.physicsBody = SKPhysicsBody(rectangleOfSize: size_sprite) 
    self.physicsBody?.usesPreciseCollisionDetection = true 
    self.physicsBody?.restitution = 0 
    self.physicsBody?.allowsRotation = false 
    self.physicsBody?.pinned = true 
    self.physicsBody?.categoryBitMask = Category.Obstacle 
    self.physicsBody?.contactTestBitMask = Category.Bullet | Category.EBullet 
    self.physicsBody?.collisionBitMask = Category.Hero | Category.Bullet | Category.EBullet 
+0

Können Sie einige Ihrer Code posten? Hast du Physikkörper mit dem Helden und den Kästen verbunden? – claassenApps

+0

@claassenApps Ich habe meine Frage aktualisiert – EBDOKUM

Antwort

0

Ich würde schaffen eine kantenbasierte Physik Körper, der die Länge des Bildschirms auf den Boden zu simulieren erstreckt. Dies sollte verhindern, dass der Spieler an den Rändern der Bodenstücke stehen bleibt, da es sich um eine fortlaufende Kante handelt. Sie könnten dann versuchen, Hindernisse vor den Spieler zu stellen.

Set der Physik Körper wie folgt aus:

let startPoint = CGPoint() // fill in the desired x and y for start point 
let endPoint = CGPoint() // fill in the desired x and y for start point 

self.floor.physicsBody = SKPhysicsBody(edgeFromPoint: CGPoint(x: startPoint.x, y: startPoint.y), toPoint: CGPoint(x: endPoint.x, y: endPoint.y)) 

Für andere Hindernisse, die den Spieler sein stoppen könnte, versuchen Sie das Debuggen von zeigt, wo die Physik Körper tatsächlich sind. Es könnte etwas sein, von dem Sie nicht erwarten, dass es den Spieler daran hindern wird, weiter zu kommen.

Im Viewcontroller, setzen

skView.showsPhysics = true 
+0

Ich benutze eine ähnliche Lösung für den Boden, ja, aber das Problem tritt auf, wenn es eine Plattform gibt, auf der Etage mehr als eine Art von Block dargestellt wird, zum Beispiel wenn es gibt eine Falltür, die nicht von einer Kante abgedeckt werden kann, da sie eine Öffnungsfunktionalität haben muss – EBDOKUM

+0

Ich würde versuchen, die Physikkörper während des Spiels zu zeigen, um zu sehen, ob etwas unerwartet den Spieler vom Vorrücken abhält. Siehe meine aktualisierte Antwort. Sei dir bewusst, dass es ein Speicherleck gibt, solange du die Physikkörper betrachtest. Es ist auf Apples Ende und wird hoffentlich bald behoben sein. Der Speicherverlust wird verschwinden, wenn Sie die ShowPhysics-Eigenschaft deaktivieren. – claassenApps

+0

Ich habe das schon gemacht und, klar, nichts ist auf dem Weg des Helden, also, ich weiß nicht, muss etwas anderes herausfinden. Vielen Dank für Ihre Mühe. – EBDOKUM