2012-02-22 2 views
0

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

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

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

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

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

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

+0

Почему он перемещается в параболе? из-за силы тяжести? –

+0

из-за силы левой или правой ракеты –

+0

одна сила, действующая сама по себе, перемещала бы судно по прямой. это новый закон Ньютона. возможно, корабль уже имел скорость? если это так, просто примените силы левого и правого маховика под противоположными углами - возможно, на 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 
Смежные вопросы