2016-11-02 5 views
0

Swift 3 및 Sprite Kit를 사용하여 게임을 개발 중입니다. 나는 움직여서는 안되지만 충돌을 감지하는 것이 중요합니다. 제 문제는 점들이 약간 움직이고 있다는 것입니다. 너는 움직이지 않는 것을 볼 수는 없지만, 내가 포지션을 프린트하면, 나는 그걸 본다. SpriteKit isDynamic이 거짓 일 때 Sprite가 약간 움직입니다.

for dot in dots { 
     //dot subclasses SKSpriteNode 
     dot.name = "dot\(index)" 
     dot.size = CGSize(width: DotWidth, height: DotHeight) 
     dot.position = pointFor(column: dot.column, row: dot.row) 
     dotsLayer.addChild(dot) 
     //dot.sprite = sprite 
     dot.physicsBody = SKPhysicsBody(circleOfRadius: 2) 
     dot.physicsBody?.affectedByGravity = false 
     dot.physicsBody?.allowsRotation = false 
     dot.physicsBody?.isDynamic = false 

     dot.physicsBody?.categoryBitMask = PhysicsCategory.Dot 
     dot.physicsBody?.contactTestBitMask = PhysicsCategory.Stick 
     dot.physicsBody?.collisionBitMask = PhysicsCategory.None 
     dot.physicsBody?.usesPreciseCollisionDetection = true 
     index += 1 

    } 

내가 affectedByGravity 같은 몇 가지를 시도 (더 중력이없는 경우에도), 및 allowsRotation : 이것은 내가 점을 만드는 방법이다. 한 점 (SKSpriteNode의 하위 클래스)의 위치를 ​​인쇄하면 Optional ((47.9458236694336, 47.9458236694336))을 얻지 만 나중에 동일한 점의 위치를 ​​인쇄하면 Optional ((47.86669921875, 79.892448425293))이 표시됩니다. 그리고 기다리는 시간이 길수록 차이가 커집니다. 쇼 물리학을 켜면 점들이 왼쪽 아래로 내려가는 것을 볼 수 있습니다. 점들을 전혀 움직이지 않는 방법이 있습니까?

+0

은 충돌에 중요하며 충돌에 대응해야하거나 단순히 연락처 정보 제공자로 사용하는 것과 관련이 있습니까? – Confused

+0

점이 전혀 움직이지 않는 경우. 정확한 탐지를 사용하지 말고 움직이는 물체에만 사용하십시오. – Knight0fDragon

+0

@ 혼란 : 연락처 정보로 할 수 있습니다. 그것이 실제로 필요한 유일한 것입니다. 나는 didBegin (_contact : SKPhysicsContact)을 사용합니다. 거기에 다른 방법이 있습니까? – APvG

답변

0

내 문제는 시뮬레이터에서 앱을 실행할 때만 존재하는 것 같습니다. 최신 Xcode 시뮬레이터 (Xcode 8.1)에서도. 내가 사용하는 시뮬레이터 (iPhone 5, iPhone 6 등)는 중요하지 않습니다. 실제 기기에서 동일한 앱을 실행해도 변화하는 문제는 보이지 않습니다. '도트'는 생성 될 때와 동일한 위치에 머물러 있습니다. 그래서 시뮬레이터 버그 인 것 같습니다.

+0

@ Confused : 나는 여전히 연락처 전용 솔루션을 사용하는 것에 관심이 있습니다. – APvG

+0

이미 연락처 만 사용하고 있습니다. – Knight0fDragon

+0

OK, 감사합니다. 나는 당신의 성명서에 조금 혼란스러워했다. :이 점들은 충돌에 중요하며, 충돌에 반응해야한다. 아니면 간단히 연락 정보 제공자로 사용하면 되는가? _ – APvG