2016-07-01 41 views
1

Also, ich bin ein Spiel erstellen und ich versuche Physik Grenzen für den Helden zu kodieren, so dass er nicht nur auf dem Boden durch den Boden fallen lol, also ich implementiert meine Szene und ich versuche, eine Alpha-Maske Textur Physik Körper auf meinem "DesertForeground" zu erstellen und ich bekomme keine Fehler, aber es stürzt immer weiter und ich bekomme diesen Fehler und das Debuggen sagt mir nicht viel, es sagt im Grunde nur ungültigen Befehl, sagt mir aber nicht, warum ist falsch. Error screenshot Kann mir jemand helfen? Ich bin ziemlich neue Physik Körper in schnellenAlpha-Maske/Textur Physik Körper fataler Fehler beim Start - swift

import SpriteKit 

enum BodyType:UInt32 { 

case hero = 01 

case bullet1 = 010 

case enemy1 = 0100 
case enemy2 = 01000 
case enemy3 = 010000 

case desertForegroundCase = 02 
} 
class GameScene: SKScene, SKPhysicsContactDelegate { 

    let desertBackground = SKSpriteNode (imageNamed: "RZ- 
DesertBackground.png") 
let desertForeground = SKSpriteNode (imageNamed: "RZ- 
DesertForeground.png") 
let desertgully = SKSpriteNode (imageNamed: "RZ-DesertGully.png") 

    override func didMoveToView(view: SKView) { 
     CreateScene() 
} 
    func CreateScene(){ 

    desertForeground.position = CGPoint(x: 570 , y: 102) 
    desertForeground.size = CGSize (width: 1136, height: 200) 
    desertForeground.zPosition = 1 

    let desertForegroundTexture = SKTexture() 
    let desertForegroundBody = SKPhysicsBody(texture: 
    desertForegroundTexture, size: CGSize(width: 1136, height: 200)) 

    desertForeground.texture = desertForegroundTexture 

    desertForegroundBody.dynamic = true 
    desertForegroundBody.affectedByGravity = false 
    desertForegroundBody.allowsRotation = false 
    desertForegroundBody.categoryBitMask = 
        BodyType.desertForegroundCase.rawValue 
    desertForegroundBody.contactTestBitMask = BodyType.enemy1.rawValue 
    | BodyType.enemy2.rawValue | BodyType.enemy3.rawValue | 
     BodyType.soldierL.rawValue | BodyType.soldierT.rawValue 

    desertForeground.physicsBody = desertForegroundBody 
} 
} 

Antwort

1

Das Problem der Codierung ist, wie Sie desertForegroundTexture füllen.

dieses Ersetzen

let desertForegroundTexture = SKTexture() 

mit dieser

let desertForegroundTexture = SKTexture(imageNamed: "YOUR_IMAGE_NAME") 
0

Ihrer Frage kommen, wenn Sie ein physicBody aus einer leeren Textur zu erstellen versuchen:

/** 
    Creates a body from the alpha values in the supplied texture. 
    @param texture the texture to be interpreted 
    @param size of the generated physics body 
    */ 
    @available(iOS 8.0, *) 
    public /*not inherited*/ init(texture: SKTexture, size: CGSize) 

In der Tat, diese zum Beispiel etwas passiert nicht, wenn Sie versuchen, ein SKSpriteNode wie folgt zu erstellen:

let desertForegroundTexture = SKTexture() 
desertForeground = SKSpriteNode(texture: desertForegroundTexture, size:CGSize(width: 1136, height: 200))