2012-02-22 9 views
0

私は宇宙船に2基のスラスタを置いています。左側に1基、右側に1基あります。宇宙船の周りを押す

右のスラスタがオンのとき、加速しているときに放物線状の曲線を左に向かって押してください。左のスラスタの場合は逆になります。

どうすれば実装できますか?

私はbox2dで「ラジアンインパルス」と呼ばれるものを見つけました。これは仕事ですか?

私は物理的にも逆の右の推力(ちょうど1つのボタンが付いた安価なRC車のようなもの)が好きですが、他のスラスタが一定の時間。

任意のライブラリを使用した実際の例(または正しい方向を示すもの)で十分です。

+0

なぜ放物線で移動するのですか?重力のために? –

+0

左または右のロケットの力のために –

+0

単独の力は船を一直線に動かすでしょう。これはニュートン第2法則です。多分、船は既に速度を持っていたでしょうか?そうであれば、左右のスラスタの力を逆の角度、おそらく垂直から15度の角度で加えてください。 –

答えて

1

ロケットを中心から外して1発のみ発射すると、あなたの船はtorqueになります。これをシミュレートするには、ロケットの推力を2つのコンポーネントに分割する必要があります。最初の方が船を前方に(向いている方向に)押し、2番目の方があなたの回転速度を上げます。例:

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 
関連する問題