module Smalruby3::SpriteMethod::Motion
Motion
category methods
Public Instance Methods
direction=(degrees)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 35 def direction=(degrees) @direction = calc_direction(degrees) sync_direction end
go_to(destination)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 21 def go_to(destination) if destination == "_random_" new_x = rand(SmalrubyToDXRuby::SCREEN_LEFT..SmalrubyToDXRuby::SCREEN_RIGHT) new_y = rand(SmalrubyToDXRuby::SCREEN_BOTTOM..SmalrubyToDXRuby::SCREEN_TOP) new_pos = [new_x, new_y] elsif destination == "_mouse_" new_pos = calc_mouse_position elsif destination.is_a?(Array) new_pos = destination end self.position = new_pos direction end
move(steps)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 7 def move(steps) self.position = [x + @vector[:x] * steps, y + @vector[:y] * steps] position end
point_towards(towards)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 41 def point_towards(towards) tx = sprite(towards).x ty = sprite(towards).y dx = tx - x dy = ty - y rad = Math.atan2(dx, dy) self.direction = rad * 180.0 / Math::PI end
position=(val)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 62 def position=(val) @x = calc_x(val[0]) @y = calc_y(val[1]) sync_position end
turn_left(degrees)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 17 def turn_left(degrees) turn_right(-degrees) end
turn_right(degrees)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 12 def turn_right(degrees) self.direction += degrees direction end
x=(val)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 50 def x=(val) @x = calc_x(val) sync_position end
y=(val)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 56 def y=(val) @y = calc_y(val) sync_position end
Private Instance Methods
calc_direction(degrees)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 91 def calc_direction(degrees) d = degrees % 360 if d > 180 d -= 360 end d end
calc_mouse_position()
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 99 def calc_mouse_position dx_mouse_x = Input.mousePosX dx_mouse_y = Input.mousePosY dx_ruby_to_smalruby = DXRubyToSmalruby.new dx_ruby_to_smalruby.position(dx_mouse_x, dx_mouse_y) end
calc_x(val)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 71 def calc_x(val) if val < SmalrubyToDXRuby::SCREEN_LEFT SmalrubyToDXRuby::SCREEN_LEFT elsif val > SmalrubyToDXRuby::SCREEN_RIGHT SmalrubyToDXRuby::SCREEN_RIGHT else val end end
calc_y(val)
click to toggle source
# File lib/smalruby3/sprite_method/motion.rb, line 81 def calc_y(val) if val < SmalrubyToDXRuby::SCREEN_BOTTOM SmalrubyToDXRuby::SCREEN_BOTTOM elsif val > SmalrubyToDXRuby::SCREEN_TOP SmalrubyToDXRuby::SCREEN_TOP else val end end