55. 簡単なゲームを作ってみるその7 もっと複雑なゲームを作るには2 YAPC::Asia 2011 package Oni; use base 'Games::BeLike::EightBIT::Sprite'; use Games::BeLike::EightBIT; sub new { my ( $pkg, $args ) = @_; my $self = { name => 'oni', x => 450, y => 190, on_hit => amp;_on_hit, is_hit => 1, }; $self = $pkg->SUPER::new($self); return $self; }
56. 簡単なゲームを作ってみるその7 もっと複雑なゲームを作るには3 YAPC::Asia 2011 sub _init_bitmap { my $hitareas = [ { x => 0, y => 0, w => 32, h => 16 } ]; my @bitmaps = (); for my $index (1..3) { push @bitmaps, create_bitmap( "oni${index}.gb8", $hitareas); } return { default => [$bitmaps[0]], walking => [$bitmaps[2], @bitmaps], }; } ハッシュを返す
57. 簡単なゲームを作ってみるその7 もっと複雑なゲームを作るには4 YAPC::Asia 2011 sub _init_animation { my ($self) = @_; $self->animation( 'walking‘, { duration => 0.5, repeat => 1 })->play; $self->animation( 'moving', { type => 'custom', on_frame => sub { my ($sprite) = @_; my $player = get_sprite('stage1:main:player'); 省略 $sprite->{x} += $vx; $sprite->{y} += $vy; }, } )->play; } 1; walkingビットマップを勝手にアニメーションしてくれる