2017-12-21 33 views
-1

SKSpriteKit 응용 프로그램에 별도의 "Floor"클래스가 있습니다. 처음이 클래스를 생성 할 때, I는SKSpriteNode physicsBody를 사용하여 벽/장벽 만들기

self.physicsBody = SKPhysicsBody하여 프레임 전체 주위 장벽했다 (edgeLoopFrom : self.frame)

을하지만 실제로로부터 유입 SKSpriteNodes 정지시켰다 화면의 상단에서 프레임 벽의 왼쪽, 오른쪽, 아래쪽을 어떻게 만들 수 있는지 알아 내려고 노력했습니다. 이것은 화면의 왼쪽에서 (사용자가 볼 수있는) 내 SKSpriteNodes 중 하나를 피할 수 있기 때문에 디스플레이를 떠나는 것에서 왼쪽과 오른쪽으로 움직입니다. 나는 그것이 작동 할 것 인 것처럼 건물 인 아래에서 시험하고있다. 그러나 내가 게임을 시작할 때 나는 벽을 보지 않는다? 나는 = 나는

skView.showsPhysics이

import Foundation 
import SpriteKit 

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

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

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

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

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

장면 크기와 크기 조절 모드는 무엇인가를 설정, 당신의 몸이 힘을 무시하게하려면? 나는. Sprite 노드의 위치를 ​​100,100 및 200,200으로 지정하면 장면의 보이는 부분 내에 있는지 확인하십시오. 또한 주된 문제가 아니라 물리 체 바디를 두 번 할당하고 하나만 가질 수 있으므로 physics 바디를 스프라이트에 추가하십시오. "self.physicsBody ="가 아니라 "leftWall.physicsBody ="입니다. –

+0

벽의 중력을 끄기 – Knight0fDragon

+0

기본적으로 'leftWall.isDynamic = false'를 입력하십시오. – Knight0fDragon

답변

2

중력이 당신의 벽에 영향을 미치는 사실 내가 잘못 뭘하는지 너무 확실하지 않다, 그래서 그들은 영원히 망각으로 떨어지고있다.

당신이 당신의 가장자리 루프를 만들 때 같은 것들을 고려해야하므로, 당신은 가장자리 루프는 항상 정적이기 때문에 당신이 볼륨 기반의 몸을 사용하는 지금

더 volumne이 없기 때문에 걱정할 필요가 없었다 중력 및 기타 힘이 몸에 영향을 미칩니다.

단순히 isDynamic = false

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

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