2016-10-14 6 views
1

화면을 따라가는 사각형 모양의 노드가 몇 개 있으며 플레이어 (P) 노드가 내부로 이동하는 것을 제한하고 싶습니다. 이 노드들. 바닥 주위에 보이지 않는 블록 모든 방법을 가하고 포함되지 않습니다 SpriteKit 물리,이 작업을 수행하는 우아한 방법이 있는지노드가 다른 노드 외부로 이동하는 것을 방지하는 방법

--------------------------------- 
| | P | | | | | | | <- Want no movement allowed 
---------------------------------  outside of these squares. 
      | | 
     ------------- 
     | | | | ... 
     ------------- 

가 궁금하네요.

감사합니다!

답변

2

SKConstraint 개체는 노드의 위치 또는 방향에 대한 수학적 제약을 설명합니다.

당신은 수평 축에서 특정 지점에서 노드에게 일정한 거리를 유지하기 위해 SKConstraint를 사용할 수 있습니다

let center = size.width/2.0, difference = CGFloat(170.0) 
let leftConstraint = SKConstraint.positionX(SKRange(constantValue: center - difference)) 
let rightConstraint = SKConstraint.positionX(SKRange(constantValue: center + difference))  
player.constraints = [leftConstraint, rightConstraint] 

또한 사용하거나 게임을하는 동안 일정한 제약을 해제하도록 결정할 수 있습니다 :

leftConstraint.enabled = false 
1

볼륨 기반 물리학 본문이 아닌 가장자리 기반 물리학 본문을 사용합니다. 따라서 물리학 자 본문을 생성 할 때는 생성자에서 edge으로 무엇이든 찾으십시오. 이제 타일 사이를 걸을 수있게하려면 바닥의 바깥 쪽 벽면에 1 개의 물리 구조체를 만들어야합니다. 타일로 타일을 적용하면 개별 타일에 달라 붙을 수 있기 때문입니다.