2012-02-22 2 views
0

나는 그것의 기지에 두 개의 추력기가있는 우주선을 가지고 있는데, 하나는 왼쪽에 하나는 오른쪽에있다.주위에 우주선을 밀기

오른쪽 스러 스터가 켜져 있으면 우주선이 가속 할 때 포물선 모양으로 왼쪽으로 밀어야합니다. 왼쪽 스러 스터의 경우 역방향입니다.

어떻게 구현하나요?

box2d에 "라디안 임펄스"라는 것을 발견했습니다. 이것이 효과가 있습니까?

나는 물리학이 약간의 오른쪽 추력 (단지 하나의 버튼이있는 값싼 RC 자동차와 비슷하다)을 반대하지만, 다른 추력기가 일정 시간 전에 사용 되었다면 .

임의의 라이브러리로 작업 예제 (또는 올바른 방향을 가리키는 것)이면 충분합니다.

+0

왜 포물선으로 움직일까요? 중력 때문에? –

+0

왼쪽 또는 오른쪽 로켓의 힘 때문에 –

+0

하나의 힘이 단독으로 작동하면 배가 직선으로 움직입니다. 이것은 뉴턴의 제 2 법칙입니다. 아마도 배는 이미 속도를 가지고 있었을 것입니까? 그렇다면 좌우의 스러 스터 힘을 반대 각도에서 적용하십시오 - 아마도 수직에서 15도 벗어날 것입니다. –

답변

1

로켓을 중앙에서 꺼내고 하나만 발사하면 배가 torque입니다. 이를 시뮬레이션하려면 로켓의 추진력을 두 가지 구성 요소로 나누어야합니다. 첫 번째는 앞으로 (앞으로 향하는 방향으로) 앞으로 우주선을 밀고, 두 번째는 당신의 회전 속도를 증가시킵니다. 예 :

pos_x,pos_y - position 
vel_x,vel_y - velocity 
angle - angle where ship is facing in deg 
angle_vel - speed of rotation in deg/s 
thrust - how much to add to speed 
torque - how much to add to angle 
thruster_left, thruster_right - boolean, true if left or right truster is firing 

function love.update(dt) 
    if thruster_left then 
     angle_vel=angle_vel+dt*torque 
    end 
    if thruster_right then 
     angle_vel=angle_vel-dt*torque 
    end 
    angle=angle+angle_vel 
    vel_x=vel_x+thrust*math.sin(math.rad(angle))*dt 
    vel_y=vel_y-thrust*math.cos(math.rad(angle))*dt 
    pos_x=pos_x+vel_x*dt 
    pos_y=pos_y+vel_y*dt 
end 
관련 문제