Толкая космический корабль - PullRequest
0 голосов
/ 22 февраля 2012

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

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

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

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

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

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

1 Ответ

1 голос
/ 14 декабря 2014

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

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
...