Толкая космический корабль

У меня есть космический корабль с двумя движителями на его базе, один слева и один справа.

Когда правое подруливающее устройство включено, оно должно толкать космический корабль по параболической кривой влево, когда он ускоряется. и реверс для левого двигателя.

Как мне это реализовать?

Я нашел что-то под названием "импульс радиана" на box2d, это сделало бы работу?

Я также хотел бы, чтобы физика немного изменила правильную тягу (немного похоже на один из тех дешевых радиоуправляемых автомобилей с одной кнопкой), но только в том случае, если другой двигатель использовался в течение определенного периода времени до этого.

Рабочего примера (или чего-то, указывающего в правильном направлении) с любой библиотекой будет достаточно.

1 ответ

Решение

Когда у вас ракеты не в центре и только один выстрел, вы даете своему кораблю крутящий момент. Чтобы смоделировать это, вам нужно разделить тягу вашей ракеты на две составляющие. Первый толкает ваш корабль вперед (в направлении, в котором он стоит), второй увеличивает вашу скорость вращения. Пример:

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
Другие вопросы по тегам