parent
430c7b2ee9
commit
d7222f3a2b
@ -0,0 +1,60 @@ |
||||
class Player < PhysCube |
||||
attr_accessor :engine, :thrust |
||||
def initialize(name, world, width, height, color=0xff_ffffff) |
||||
super name, world, width, height, color |
||||
|
||||
@engine = false |
||||
@thrust = 0.001 |
||||
end |
||||
|
||||
private def get_angle_vec |
||||
rads = (self.angle * Math::PI) / 180 |
||||
dir_vec = Vector[Math::cos(rads), Math::sin(rads)] |
||||
return dir_vec |
||||
end |
||||
|
||||
def tick |
||||
super |
||||
|
||||
if( @engine && !self.world.freeze ) then |
||||
self.vel += self.get_angle_vec * @thrust |
||||
end |
||||
end |
||||
|
||||
def button_up(id) |
||||
end |
||||
|
||||
def button_up?(id) |
||||
end |
||||
|
||||
def button_down(id) |
||||
if( id == Gosu::KbSpace ) then |
||||
@engine = !@engine |
||||
end |
||||
|
||||
if( id == Gosu::KbLeft ) then |
||||
self.angle -= 20 |
||||
end |
||||
|
||||
if( id == Gosu::KbRight ) then |
||||
self.angle += 20 |
||||
end |
||||
|
||||
if( id == Gosu::KbUp ) then |
||||
self.thrust += 0.0005 |
||||
self.thrust = self.thrust.round(5) |
||||
end |
||||
|
||||
if( id == Gosu::KbDown ) then |
||||
self.thrust -= 0.0005 |
||||
self.thrust = self.thrust.round(5) |
||||
end |
||||
end |
||||
|
||||
def button_down?(id) |
||||
end |
||||
|
||||
def debug_string |
||||
return "\nName: #{self.name}\nOrbit of: #{self.parent_orbit.name}\nVel: #{self.vel.magnitude.round(1)} #{self.vel.round(4)}\nAccel: #{self.accel.magnitude.round(4)} #{self.accel.round(4)}\nPos: #{self.pos.round(4)}\nAngle: #{self.angle.round(1)} deg\nEngine: #{self.engine}\nThrust: #{self.thrust}\n" |
||||
end |
||||
end |
Loading…
Reference in new issue