2014-12-31 3 views
0

실제로 화면에서 본문을 이동하려면 Box2d를 사용하여 Libgdx의 찾기 동작을 구현하려고합니다. 탐색 동작이 작동하는 방식과 Steerable 인터페이스를 구현하는 두 개의 개체 클래스가있는 방법을 이해합니다. Seek 클래스를 살펴 봤는데 SteeringAcceleration이 어떻게 작동하는지 이해하지 못합니다. 내 게임/렌더링/주 세계적인 수준에서 : 내 개체 클래스에서Libgdx 찾기 동작을 box2d에서 사용 하시겠습니까?

//fields 
Seek<Vector2> s; 
Object a; 
Object b; 

//constructer 
s = new Seek<Vector2>(b,a); 
    s.setEnabled(true); 

//run 
s.calculateSteering(//not sure what to put here for SteeringAcceleration param?); 

: 나는이 순간 (이러한 관련 비트입니다)에서

public float getMaxAngularAcceleration() { 
    return 5;//not sure what to put here yet 
} 

@Override 
public Vector2 getPosition() { 
    return new Vector2(sprite.getX(), sprite.getY()); 
} 

^^이 Seeer로 바꿀 수있는 Steerable의 유일한 방법 인 것 같습니다.

나는 행동에 관한 libgdx 튜토리얼을 읽었고 이론적으로는 그것을 이해하지만, 나는 삶의 모든면에서이 모든 것을 코드에 집어 넣는 방법을 생각할 수 없다. calculateSteering이 말하는 곳으로 가서 실제로 움직이게하려면 몸에 힘이나 충동을 가할 필요가 있습니다. 그러나 어디에서 그것을 수행해야하는지, 그리고 정확하게 조종 계산의 매개 변수에 넣어야 할 것을 모릅니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

0

SteeringAcceleration은 탐색 동작이 계산 한 선형 및 각가속도를 유지하는 클래스입니다.

SteeringAcceleration<Vector2> steerAcc = new SteeringAcceleration<Vector2>(); 
s.calculateSteering(steerAcc); 

는 그런 다음 업데이트 방법에 당신은 Box2D의 몸에 SteeringAcceleration에 가속도 값을 적용합니다.

body.applyLinearImpulse(steerAcc.linear.scl(deltaTime), pos, true); 
body.applyAngularImpulse(steerAcc.angular * deltaTime, true); 
+0

감사합니다. 약간의 조정이 필요하지만 작동합니다! –

관련 문제