2017-12-22 38 views
1

내 게임의 시작 부분에 두 개의 직사각형이 표시되지만 일단 시작되면 중력이 내려갑니다. 아래 코드는 별도의 "Floor.swift"클래스에 있습니다. 나는 또한 아래 정보와 함께 "BitMaskCategories.swift"파일을 가지고있다.중력 제거 SKNode 플로어 클래스

let ballCategory : UInt32 = 0x1 << 1 
let avoidCategory : UInt32 = 0x1 << 2 
let floorCategory : UInt32 = 0x1 << 3 
let pointCategory : UInt32 = 0x1 << 4 
let lifeCategory : UInt32 = 0x1 << 5 

그리고 여기 내 "Floor.swift"클래스

import Foundation 
import SpriteKit 

class Floor: SKNode { 
    override init() { 
     super.init() 

     let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 50, height: 300)) 
     leftWall.position = CGPoint(x: 0, y: 100) 
     leftWall.physicsBody!.isDynamic = false 
     leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size) 
     self.addChild(leftWall) 

     let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 50, height: 300)) 
     rightWall.position = CGPoint(x: 100, y: 200) 
     rightWall.physicsBody!.isDynamic = false 
     rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size) 
     self.addChild(rightWall) 

     // self.physicsBody?.affectedByGravity = false 
     // self.physicsBody?.isDynamic = false 

     // Set the bit mask properties 
     self.physicsBody?.categoryBitMask = balloonCategory 
     self.physicsBody?.contactTestBitMask = nailDropCategory | pointCategory | lifeCategory 
     //self.physicsBody?.collisionBitMask = balloonCategory 
    } 

    required init?(coder aDecoder: NSCoder) { 
     fatalError("init(coder:) has not been implemted") 
    } 
} 

나는 오류 "스레드 1 : 치명적인 오류 : 예기치 않게하는 옵션 값 풀기 동안 전무 발견"이유는 무엇입니까하지만 때를 "?" 대신에 "!" 응용 프로그램이 작동하지만 사각형이 떨어집니다. 나는 그것을하지 않기 위하여 그 선을 필요로하고 이것이 의미있는 방법조차 얻지 못한다. 그것을

이동, rightWall.physicsBody!.isDynamic = false : 동일한

당신이 leftWall.physicsBody!.isDynamic = false

leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)

를 이동해야 개체 초기화 전에 .isDynamic = false 및 :

답변

3

당신은 할당하려고 이후 : rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)

그래서 코드는 다음과 같을 수 있습니다

let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 50, height: 300)) 
leftWall.position = CGPoint(x: 0, y: 100) 
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size) 
leftWall.physicsBody!.isDynamic = false 
self.addChild(leftWall) 

let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 50, height: 300)) 
rightWall.position = CGPoint(x: 100, y: 200) 
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size) 
rightWall.physicsBody!.isDynamic = false 
self.addChild(rightWall) 
+0

난 당신이 너무 많은 괴물 주셔서 감사합니다! – Dewan

+0

도움이 되셨다면 기쁘게 생각합니다. 네! :) –

+0

그래서 한 가지 문제가 생겼습니다. 솔루션을 상당히 빨리 알게 될 것 같습니다. 기회가 생기면 내 새 게시물을 확인하십시오. https://stackoverflow.com/questions/47946410/skysysicscontact-not-detecting-categorybitmask-collision – Dewan