0

私はそのベースに2つのスラスターを備えた宇宙船を持っています。1つは左側に、もう1つは右側にあります。

右のスラスターがオンになっているときは、加速しながら宇宙船を放物線状に左に押し出す必要があります。左スラスターの場合はその逆です。

これを実装するにはどうすればよいですか?

box2dで「ラジアンインパルス」と呼ばれるものを見つけましたが、これでうまくいくでしょうか?

また、物理学では、右の推力を少し逆にしたいと思います(ボタンが1つしかない安価なRCカーの1つに少し似ています)が、他のスラスターが一定時間前に使用された場合に限ります。

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

4

1 に答える 1

1

ロケットが中心から外れて 1 発しか発射されない場合、船にトルクを与えていることになります。これをシミュレートするには、ロケットの推力を 2 つのコンポーネントに分割する必要があります。1 つ目は船を前方に (船体が向いている方向に) 押し、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
于 2014-12-14T13:06:36.940 に答える