2012-11-01 4 views
-1

AS3 및 Box2D로 플레이어를 만들면 플레이어가 움직일 수 있지만 AS3 (예 : x ++)로 이동하는 것처럼 플레이어를 움직일 수는 없습니다. ApplyImpulse (새로운 b2Vec2 (1,0), GetWorldCenter())와 반대입니다. 플레이어가 플래시처럼 움직일 수있게하려면 어떻게해야할까요? 제대로 작동하지 않는 ApplyForce 및 SetPosition을 시도했습니다! 플레이어가 매우 부유하거나 즉시 컨트롤에 응답하지 않습니다, 어떤 조언을 크게 주시면 감사하겠습니다!AS3 Box2D 플레이어 이동

문제가있는 경우 설명해 주시겠습니까?

:

답변

1

이유는 다음 GetLinerVelocity과 ApplyImpulse를 사용해보십시오, 내가 같은 것을 의미 ...이 예절로 만든 물론 나는 정확히 키를 사용하여이 개 기능을 이전하게 작동 할 수 없습니다 player_normal은 단지 플레이어 (객체)입니다. 그리고 물론 player_max_speed과 player_speed 내가 원하는대로 이동에 추가 단지 다른 예절 ...

  player_speed = 2; 
      player_max_speed = 4; 
      player_normal = new b2Vec2(0, 0); 

이 함수 홈페이지에 간다이다. 속도와 max_speed를 Number var로 설정하고 법선은 단지 b2Vec2입니다.

그리고 당신은 키까지 아래로 누릅니다 때 키 기능입니다 : 물론

private function apreto(e:KeyboardEvent):void 
     { 
      switch (e.keyCode) 
      { 
       case 37: 
        left = true; 
        break; 
} 

private function suelto(e:KeyboardEvent):void 
     { 
      switch (e.keyCode) 
      { 
       case 37: 
        left = false; 
        break; 
} 

는 "왼쪽"부울입니다. 아주 간단합니다. 그리고 당신은 모든 키 (오른쪽, 위, 아래)와 같은 것을해야합니다. 원하는 키의 종류에 달려 있습니다. 예를 들어 숫자 37 = 키보드 왼쪽에있는 키. 알려하지 않을 경우 좀 더 할 수있는 다른 방법이 ... 내가 당신을 도울 수있는 희망

if (player_normal.x >= 0) 
      { 
       if (left) 
       { 
        if (player.GetLinearVelocity().x > -player_max_speed) 
        { 
         player.ApplyImpulse(new b2Vec2(-player_speed, 0), player.GetWorldCenter()); 
        } 
       } 
      } 

:

그리고 코드

움직임에게 (업데이트)에서 플레이어를 제공합니다 쉬운. 질문에 답할 수 있다면 도와 주셔서 감사합니다.

+0

멋진 팁을 주셔서 감사합니다. :) –

관련 문제