2011-10-19 3 views
0

나는 box2d로 안드로이드 게임을 개발 중이며 물리학을 발전시키기 위해 고정 타임 스텝 시스템을 사용합니다.위치 보간이 제대로 작동하지 않습니다.

그러나이 시스템을 사용할 때 box2d 위치가 보간되어야합니다. 나는 this article 을 읽고 기사의 것과 매우 유사한 보간 방법을 구현했습니다.

이 방법은 컴퓨터에서 멋지게 작동하지만 내 전화기에서는 개체의 위치가 매우 불안정합니다. 물론 PC와 휴대 전화간에 큰 프레임 속도 차이가 있지만이 알고리즘이 신경 쓰지 않아야한다고 생각합니다. 내 게임이처럼 행동하는 이유

void PhysicsSystem::smoothStates_() 
{ 
    const float oneMinusRatio = 1.f - fixedTimestepAccumulatorRatio_; 

    for (b2Body * b = world_->GetBodyList(); b != NULL; b = b->GetNext()) 
    { 
     if (b->GetType() == b2_staticBody) 
     { 
      continue; 
     } 

     PhysicsComponent & c = PhysicsComponent::b2BodyToPhysicsComponent (* b); 
     c.smoothedPosition_ = 
      fixedTimestepAccumulatorRatio_ * b->GetPosition() + 
      oneMinusRatio * c.previousPosition_; 
     c.smoothedAngle_ = 
      fixedTimestepAccumulatorRatio_ * b->GetAngle() + 
      oneMinusRatio * c.previousAngle_; 
    } 
} 

사람이 알고 있나요 : 여기

당신이 글을보고 기분이 안되면 코드의 단지인가? 도움

답변

0

그 자체의 코드에 대한

덕분 기사에 비해 어떤 문제가 표시되지 않습니다. https://gamedev.stackexchange.com/에 게시하고 권장 사항이 있는지 확인해보십시오.

또는 here은 반 고정 시간 간격과 디커플링 물리 및 프레임 속도에 관한 매우 잘 쓰여진 기사입니다. 상상할 수 있습니다. Box2D를위한 것이 아닙니다.하지만이 부분을 읽으면 물리 문제를 정확히 파악하는 데 도움이 될 것입니다.

+0

감사합니다. 이미 해당 기사를 읽었으며 구현에 표시된 것과 동일한 시스템을 사용합니다. 나는 이것을 gamedev.stackexchange에 게시 할 것이다. – Jason

관련 문제