2017-01-15 1 views
0

나는 화면에서 몇 개의 객체를 움직여야하는 간단한 iOS 게임 응용 프로그램을 만들고이 움직이는 객체는 제스처를 스 와이프하여 그에 따라 방향을 변경합니다. 나는 이것을 위해 spritekit 또는 다른 게임 프레임 워크를 사용하지 않고 있으며 객체를 움직이는 방법은 초당 60 번 발사하는 NSTimer를 트리거하는 것입니다. 내가 명시 적으로 타이머를 주 스레드에 의해 실행되는 것 같아 어떤 스레드를 사용하고 있습니까? 타이머가 트리거하는 코드 블록은 속도에 따라 객체의 위치를 ​​업데이트합니다 (x/y 방향으로 시간 단위당 픽셀로 정의 됨). 그것은 잘 작동하고 있으며, 거의 프로젝트의 끝 부분이지만, 응용 프로그램을 테스트하는 동안 나는 개체의 움직임은 꽤 좋은 것 같지만, 때로는 움직임이 약간 거칠고/뾰족하지 않다는 것을 깨달았습니다. 제 질문은 이런 식으로하는 것이 옳은 방법인지, 어떻게 성능을 향상시킬 수 있습니까? GCD와 같은 것을 사용하면 지저분한 움직임의 문제를 해결할 수 있습니까? (나는 GCD를 자세하게 조사하지는 않았지만 그것이 도움이된다면 나는 그것에 시간을 할애하고있다)NSTimer를 사용하여 화면에서 객체 이동하기

어떤 도움을 주셔서 감사합니다!

+2

'NSTimer'을 사용하지 마십시오. 'SpriteKit'과 그들이 가지고있는 스케쥴링을 사용하거나, 다른 것을 사용하고 싶다면'CADisplayLink'를 사용하십시오. – EmilioPelaez

+1

내 첫 번째 게임은 sprite로 UIImageViews를 사용하여 NSTimer에서 만들었습니다 (Blast The Droids를보고 싶다면 Blast The Droids). 너무 많은 스프라이트를 사용하지 않는 한 괜찮습니다. 하지만 게임에서 성능 문제가 발생했다면 SpriteKit을 사용하는 것이 더 낫다고 생각합니다. 2, 3, 4 번째 게임은 모두 SpriteKit을 사용하며 배우는 것이 더 낫지 만 어렵지 않다고 보장합니다. – GeneCode

+0

고마워! 지금 SpriteKit으로 전환 중입니다. 지금까지는 꽤 좋은 것 같습니다 :) – comatose

답변

4

내가 객체를 이동하고있는 방법은 60 번 내가 그 일을하지 않는 것이 좋습니다 것이 두 번째

를 발생 NSTimer을 유발하는 것입니다. 다양한 형태의 애니메이션이 내장되어 있습니다 (애니메이션보기, 레이어 애니메이션, CADisplayLink, UIKit 다이내믹). 물론 스프라이트 키트가 있습니다. 이 목적을 위해 제공된 도구를 사용하십시오. 당신이 이미 Ducati를 가지고있을 때 외발 자전거를 다시 만들지 마십시오.

관련 문제