蛇みたいな、しっぽみたいな
TOP > てきとうにこらむ > ゲーム作りとプログラミング日記 > 蛇みたいな、しっぽみたいな
蛇みたいな
自分の後を追いかける。数フレーム前の座標を覚えておくことで、後ろの四角が後を追いかけるようになる。その姿はまるで、蛇のようだなぁと思うし、しっぽのようだなとも思うんですよ。
#!ruby -Ks
require "dxruby"
class LaserParts < Sprite
def initialize(x=nil, y=nil, image=nil)
super
@children = init
@count = -1
@speed = 3
end
def init
Array.new(10) {|i| LaserPartsChildren.new(self.x, self.y, self.image) }
end
def move
self.childrenmove
self.x += Input.x * @speed
self.y += Input.y * @speed
@count += 1
end
def childrenmove
if @count % @speed == @speed - 1
length = @children.length
@children.each_index do |child|
if child == length - 1
@children[child].x, @children[child].y = [self.x, self.y]
else
@children[child].x = @children[child + 1].x
@children[child].y = @children[child + 1].y
end
end
end
end
attr_reader :children
end
class LaserPartsChildren < LaserParts
def init
end
def move
end
end
laser = LaserParts.new(10, 10, Image.new(8, 8).boxFill(0, 0, 8, 8, [255,60,60]))
Window.loop do
laser.move
laser.draw
laser.children.each {|child| child.draw }
break if Input.keyPush?(K_ESCAPE)
end
1フレーム前の座標を反映してしまうと、それぞれがくっつきすぎだったので3フレームとしといた。なんだか蛇みたいなその動きは、いろいろと参考になりそうだ。