2014-02-13 2 views
4

플레이어의 속도를 어떻게 조절할 수 있습니까? ,내 게임 속도를 제어 하시겠습니까?

if(([self childNodeWithName:@"hero"].position.x >= 180) 
    && 
    (self.touchedHero == YES) 
    && _canMove ==YES){ 

    [[self childNodeWithName:@"hero"]setPosition:CGPointMake(180, [self childNodeWithName:@"hero"].position.y)]; 

    [self.world setPosition:CGPointMake(self.world.position.x-5, self.world.position.y)]; 

그러나이 방법은 장치의 성능에 의존하고, 속도가 매우 불안정 인 iOS 기기에서 내 응용 프로그램을 실행할 때, 경우에 따라서는 매우 빠르게 이동하고 때로는 느리게 : 나는 운동 didSimulatePhysics() 방법을 사용하고 있습니다 어떻게이 속도를 제어 할 수 있습니까 ???

답변

0

프레임 속도 독립성을 고려하거나 고려하지 않거나 게임 또는 물리 계산을 구성하는 방식을 변경하는 것이 좋습니다. 무엇보다 중요한 것은 코드의 비효율적 인 부분을 제거하기 시작하는 좋은시기 일 것입니다.이 질문은 자신에게 자문 할 수있는 "초보적인"질문 목록입니다.

  • 어떻게 개체를 구성하고 있습니까? 계산을 불필요하게 만드는 상황에 관계없이 모든 것을 반복하고 모든 것에 대해 물리 계산 및 충돌 감지를 수행하고 있습니까?
  • 오브젝트를 공간 트리로 파티셔닝했거나 모든 오브젝트를 루핑하는 것 (가장 중요한 충돌 감지 용)은 있습니까?
  • 몇 개의 개체가 있습니까? 몇 명이나 필요합니까? 원하는 사용자 경험을 희생하지 않고도 게임에서 어떤 것을 제거 할 수 있습니까?
  • 오프 스크린 물체에 대한 물리 계산을 수행합니까?
  • 물리 또는 논리 계산에 심각한 알고리즘 결함이 있습니까? 규모면에서 개선 될 수있는 것은 무엇입니까?
  • 개체를 현명한 방법으로 저장하고 있습니까? 위의 항목처럼 매우 효과적이지는 않지만 개체 풀링을 예로들 수 있습니다.
  • 고가의 루프 본문에서 C 코드로 대체 될 수있는 Objective-C 코드를 사용하고 있습니까? (C 함수 호출은 2 CPU 주기로 실행되지만 ARC의 Objective-C 메시지는 9 주기로 실행됩니다. 이것은 가장 먼저 살펴 봐야 할 것이 아니지만 고려해야 할 가치가 있습니다. 4.5x 속도 향상은 많은 객체를 다루지 만 병목 현상은 아닙니다.

This good post on learn-cocos2d.com은 iOS를 염두에두고 FPS 문제에 대해 자세히 설명합니다.

This good post on gafferongames.com은 timestep 업데이트를 처리하는 다양한 방법에 대해 자세히 설명합니다. 흥미로운 내용이지만 시간 구조를 너무 많이 차지하기 전에 먼저 데이터 구조 & 알고리즘을 먼저 살펴보고 싶을 것입니다.

관련 문제