2017-08-07 1 views
0

Ich habe versucht, erstellen Bitmask Kategorien, alle Restitution Werte auf 1 und alles andere unter der Sonne einschließlich der Ausführung der Anwendung ein Gerät und es funktioniert überhaupt nicht. Nachdem ein SKSpriteNode mit retitution 1 gesetzt wurde, um einen anderen skspritenode auch mit restitution eins bei dx: 100 zu erreichen, springt es immer noch nicht! Hier ist mein Code für GameScene.swift:Wiederherstellung funktioniert nicht auf irgendetwas in SpriteKit

import SpriteKit 
import GameplayKit 

class GameScene: SKScene { 

override func didMove(to view: SKView) { 

    let Ball = SKSpriteNode() 
    Ball.self.childNode(withName: "Ball") 

    let playerPaddle = SKSpriteNode() 
    playerPaddle.self.childNode(withName: "playerPaddle") 

    let computerPaddle = SKSpriteNode() 
    computerPaddle.self.childNode(withName: "computerPaddle") 

    let ballCategory: UInt32 = 0x1 << 1 
    let paddleCategory: UInt32 = 0x1 << 2 
    let borderCategory: UInt32 = 0x1 << 3 

    Ball.physicsBody?.categoryBitMask = ballCategory 
    playerPaddle.physicsBody?.categoryBitMask = paddleCategory 
    computerPaddle.physicsBody?.categoryBitMask = paddleCategory 
    self.physicsBody?.categoryBitMask = borderCategory 

    let playerScore = SKLabelNode() 
    playerScore.fontName = "Pong Score" 
    playerScore.text = "0" 
    playerScore.fontSize = 100 
    playerScore.color = SKColor.white 
    playerScore.position = CGPoint(x: -200, y: 220) 
    playerScore.zPosition = 3 
    addChild(playerScore) 

    let comScore = SKLabelNode() 
    comScore.fontName = "Pong Score" 
    comScore.text = "0" 
    comScore.fontSize = 100 
    comScore.color = SKColor.white 
    comScore.position = CGPoint(x: 200, y: 220) 
    comScore.zPosition = 3 
    addChild(comScore) 

    var comScoreInt: Int = Int(comScore.text!)! 
    comScoreInt += 1 
    comScore.text = String(comScoreInt) 

    var playerScoreInt: Int = Int(playerScore.text!)! 
    playerScoreInt += 1 
    playerScore.text = String(playerScoreInt) 

    let bodyBorder = SKPhysicsBody(edgeLoopFrom: self.frame) 
    bodyBorder.friction = 0 
    bodyBorder.restitution = 1 
    self.physicsBody = bodyBorder 
} 
} 

PS fast alle von der Physik ist in GameScene.sks nicht GameScene.swift, aber das ist, wo die Bitmasken sind.

EDIT:

Ball-Config;

Position x: 0, Y: 0, Z: 0,

Rotation: 0,

Größe: w: 25, H: 25,

Anchor Point: x: 0,5, y: 0,5,

Farbe: weiß,

Mischung Factor: 0,

Mischmodus: alpha,

Alpha: 1,

Ik Constraints: min: 0, max: 360,

Maßstab: X: 1, Y: 1,

PHYSICS

Körperbau: Bounding rect,

nur dynamisch geprüft,

Reibung: 0,

Restitution: 1,

Linuar Damp: 0,

Angular feucht: 0,

Kategorie, Kollision und Feldmaske: 4294967295,

Kontakt Maske: 0

Anfangsgeschwindigkeit: dx: 100 dy: 0

Paddles sind die gleichen physikalischen weise BITTE HILFE!

+0

Kommentare sind nicht für längere Diskussion; Diese Konversation wurde [zum Chatten verschoben] (http://chat.stackoverflow.com/rooms/151298/discussion-on-question-by-isaac-dragon-restitution-not-working-on-anyything-in-sp) . –

Antwort

0

Insead eine Inital Geschwindigkeit in GameScene.sks der Anwendung angewendet ich stattdessen eine Kraft in GameScene.swift wie so: Ball.physicsBody?.applyImpulse(CGVector(dx:50, dy:0)) Restitution zu arbeiten begann

Verwandte Themen