CoRサンプル集: CoRサンプル - 当たり判定

カーソルキー(↑↓→←)で動き回ることができます。
爺さんキャラにぶつかると爆発して消えます。
プレー:49 (人数:34) クリア:0 評価: 10 (1回)
scene 'start' do # シーン内で使う変数の定義 player_sprite = nil baku = nil my_sound = nil my_music = nil jiisan_layer = nil # 画像や音楽などのロード preload do image 'pchara', id: 315474, frame_size: [32, 32] image 'chara_jiisan', id: 316078, frame_size: [32, 32] image 'bakuhatsu', id: 315475, frame_size: [96, 96], frame_pattern: 16 music 'main_music', id: 40 sound 'sound_bakuhatu_1', id: 43 end # 画像などのロード後に実行される初期化処理 create do # レイヤー追加 player_layer = add_layer jiisan_layer = add_layer # プレイヤーキャラの初期化 player_sprite = put_sprite 'chara' do position 400, 400 frame_index 0 end player_sprite.start_animation('up') player_layer.add player_sprite # プレイヤー以外のキャラクタの配置 10.times do |i| jiisan_sprite = put_sprite 'chara_jiisan' do position 100 + i * 48, 225 frame_index 0 end jiisan_sprite.start_animation('down') jiisan_layer.add jiisan_sprite end # 効果音の準備 my_sound = add_sound('sound_bakuhatu_1') # 音楽の準備と再生開始 my_music = add_music('main_music') my_music.play end update do # プレイヤーと爺さん専用レイヤーの当たり判定の処理 collision(player_sprite, jiisan_layer) do # 衝突したスプライトのペアを取得 # 取得できるスプライトの順番とcollisionメソッドに渡した引数の順番は対応付くことに注意 obj1, obj2 = collision_pair # 爆発アニメーションの開始 baku = start_bakuhatsu(self, baku, obj2.position, my_sound) # プレイヤーに当たるとキャラクタは消滅する obj2.destroy end # カーソルキーをおした時の処理 # キャラクターがカーソルキーの方向に向いて、向いた方向に移動する if keyboard.down?('LEFT') pos = player_sprite.position player_sprite.position pos[0] - 1, pos[1] player_sprite.start_animation('left') end if keyboard.down?('DOWN') pos = player_sprite.position player_sprite.position pos[0], pos[1] + 1 player_sprite.start_animation('down') end if keyboard.down?('RIGHT') pos = player_sprite.position player_sprite.position pos[0] + 1, pos[1] player_sprite.start_animation('right') end if keyboard.down?('UP') pos = player_sprite.position player_sprite.position pos[0], pos[1] -1 player_sprite.start_animation('up') end # 爆発アニメーションが終わったらスプライトを消去 # frame_indexを使って直接的に操作 if baku if baku.frame_index >= 15 baku.destroy baku = nil else baku.frame_index(baku.frame_index + 1) end end end render do end end start_scene "start" sprite 'chara' do image 'pchara' origin :center animation 'up', [6, 7], 10, true animation 'down', [0, 1], 10, true animation 'left', [2, 3], 10, true animation 'right', [4, 5], 10, true end sprite 'chara_jiisan' do image 'chara_jiisan' origin :center animation 'up', [6, 7], 10, true animation 'down', [0, 1], 10, true animation 'left', [2, 3], 10, true animation 'right', [4, 5], 10, true end sprite 'baku' do image 'bakuhatsu' origin :center end text 'basic-text' do origin :center font_size 65 color '#FF0088' end def start_bakuhatsu(scene, old_baku, pos, sound = nil) if old_baku old_baku.destroy old_baku = nil end if sound sound.play end result = scene.put_sprite 'baku' do position pos[0], pos[1] scale 2.0, 2.0 frame_index 0 end return result end
コード一覧
  • start.rb
投稿者:Material 6858 mini akasata 対象Lv1 公開日:2017年01月28日 18:01:29
プレー内容を公開する

違反を通報する

コメントする

コメントするには、ログインする必要があります。

コメント一覧

コメントはありません。

プレー履歴

プレー履歴はありません。

全てのプレー履歴を見る

新着レビュー

レビューはまだ投稿されていません。 作品の感想を作者に伝えるためにレビューを投稿してみませんか?

全てのレビュー

フォロー/シェア

ブログ/Wiki/掲示板で共有する

Rmake内(ブログ/Wiki/掲示板)に貼り付ける場合は以下のタグを利用してください。

リンク

プレイヤー

外部ホームページに貼り付ける

外部ホームページに貼り付ける場合は以下のタグを利用してください。