2016-07-01 3 views
1

Итак, я создаю игру, и я пытаюсь закодировать границы физики для героя, чтобы он не просто падал через пол при запуске lol, так что я реализовала мою сцену, и я пытаюсь создать тело физики текстуры альфа-маски на моем «desertForeground», и я не получаю никаких ошибок, однако он продолжает сбой, и я получаю эту ошибку, и отладка не говорит мне многого, это просто в основном говорит недействительная инструкция, но не говорит мне, почему это неправильно. Error screenshot Может кто-нибудь мне помочь? Я довольно новый для кодирования физических тел в быстромАльфа-маска/текстура Физика тела фатальная ошибка при запуске - 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 
} 
} 

ответ

1

Проблема заключается в том, как вы заполнить desertForegroundTexture.

Заменить этот

let desertForegroundTexture = SKTexture() 

с этим

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

Ваш вопрос, когда вы попытаетесь создать physicBody из пустого текстуры:

/** 
    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) 

В самом деле, например, этого что-то не получается, если вы попытаетесь создать SKSpriteNode следующим образом:

let desertForegroundTexture = SKTexture() 
desertForeground = SKSpriteNode(texture: desertForegroundTexture, size:CGSize(width: 1136, height: 200)) 
Смежные вопросы