てきとうなさいと べぇたばん

蛇みたいな、しっぽみたいな

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フレームとしといた。なんだか蛇みたいなその動きは、いろいろと参考になりそうだ。

2012/07/20 17:28