推着宇宙飞船

时间:2012-02-22 15:48:39

标签: cocos2d-iphone box2d chipmunk love2d libgosu

我有一艘宇宙飞船,在它的基座上有两个推进器,一个在左边,一个在右边。

当右推进器打开时,它应该在太空飞船加速时向左推动抛物线。和左推进器相反。

我该如何实现?

我在box2d上发现了一种叫做“弧度冲动”的东西,这会起作用吗?

我还希望物理反转一点点的正确推力(有点像只有一个按钮的那些廉价遥控车之一),但只有在其他推进器之前的一定时间内使用。

使用任何库的工作示例(或指向正确方向的东西)就足够了。

1 个答案:

答案 0 :(得分: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