CoRサンプル集: 玉乗りピエロ

クリックで左側のピエロがジャンプ
じゃれついてくるライオン(のつもりの何か)を
ジャンプで躱そう。
お借りした素材など
プレー:216 (人数:86) クリア:60 評価: 36 (4回)
CoR[?]
scene 'start' do #=====変数の宣言===== #ここで変数を設定しておかないと #同じシーンでもupdateとかrenderとかの #ブロック間で共有されないっぽい player_layer = nil ground_layer = nil jama_layer = nil exit_layer = nil score_layer = nil player_sprite = nil ground_sprite = nil jama_sprite = nil exit_sprite = nil score_sprite = nil my_music = nil se_jump = nil se_lion = nil se_ending= nil score = 0 count = 1 count_jama = 0 #障害物をいれる入れる配列の設定 #配列にせず変数1こだけでやっていたら #新しいスプライトを作ったタイミングで #古い方のあたり判定がなくなっていた(絵は消えなかった) #配列を作って順番に使い回すことにした jama =[nil,nil,nil,nil,nil] preload do image 'chara_00' , id: 323415, frame_size: [128, 128], frame_pattern: 4 #今回,ピエロの1枚絵は128x128を4つ横に並べている image 'ground_00' , id: 323427, frame_size: [128, 128] image 'jama_00' , id: 323424, frame_size: [128, 128] image 'exit_00' , id: 250109, frame_size: [32, 32] music 'main_music', id: 189465 sound 'jump' , id: 166489 sound 'lion' , id: 222157 sound 'ending' , id: 221449 end create do # レイヤーの初期化 ground_layer = add_layer jama_layer = add_layer exit_layer = add_layer player_layer = add_layer score_layer = add_layer #====プレイヤーキャラに関する設定==== # プレイヤーキャラの初期化 player_sprite = put_sprite 'chara' do position 100, 250 frame_index 0 end player_layer.add player_sprite #あたり判定の範囲を調節 #player_sprite.collision_size(100,128) player_sprite.collision_circle(54,0,6) #プレイヤーのアニメーションを開始する #アニメーションの設定は下の方でやっている player_sprite.start_animation('walk') # プレイヤーのスプライトに重力加速度を与える # ジャンプした際に自然な放物線になってくれると思う player_sprite.gravity(0,35) #====地面に関する設定==== # 地面のスプライトの初期化 # 今回のゲームではボールに相当 ground_sprite = put_sprite 'ground' do position 100,378 end ground_layer.add ground_sprite # 円形のあたり判定を使っている # ピエロのあたりの大きさを調整した分と # 辻褄を合わせ合わせるためにやや大きくしている ground_sprite.collision_circle 68 # 地面のスプライトが動かないように設定する ground_sprite.movable false #====画面外に出た障害物を消すためのスプライト==== # 画面外にスプライトを設置しておいて # 障害物がぶつかったらぶつかった障害物を消している # スプライトの初期化 exit_sprite = put_sprite 'exit' do position -1000,280 end exit_layer.add exit_sprite # スプライトが動かないように設定する exit_sprite.movable false #====スコア表示の準備==== score_sprite = put_text 'score_00' do position 50,50 text '' end # 音楽の準備と再生開始 my_music = add_music('main_music') my_music.play # 効果音の準備 se_jump = add_sound('jump') se_lion = add_sound('lion') se_ending = add_sound('ending') end update do debug_log "Mouse: #{pointer.x}, #{pointer.y}" # クリックもしくはタップされたかどうかを取得 # 空中でジャンプできないように、ボールに接しているかどうかを先に調べている collision(player_sprite, ground_layer)do if pointer.down? # 効果音の再生 se_jump.play # スプライトに上向きの速度を与える player_sprite.velocity(0,-13) end end # 60回ループするごとに3/4の確率で # 障害物を出現させるようにしている if count%60==0 && rand(4) != 0 #ループの回数を数える変数が大きくなりすぎない様 #リセットしている #スコアはしゃーない count = 0 #ライオンを入れる配列変数を #1-2-3-4-5-1と順番に使う様にしている #ややめんどくさい count_jama = (count_jama + 1 ) % 5 a=count_jama jama[a] = put_sprite 'jama' do # いきなり画面内に現れると不自然なので画面外に置いている # ライオン同士の間隔が多少ばらつく様にしている # あまり意味はない position 700 + (3-rand(5))*35,282 frame_index 0 end jama_layer.add jama[a] jama[a].collision_size(95,35,-15,5) jama[a].velocity(-7,0) se_lion.play end # 画面外に出た障害物を消している部分 collision(exit_sprite, jama_layer)do obj1, obj2 = collision_pair obj2.destroy end # プレイヤーと障害物の衝突 collision(player_sprite, jama_layer)do obj1, obj2 = collision_pair #collision_pairに対して速度とか #入れれるかと思ったけどそうでもない #別々に設定する必要があった obj1.gravity(0,0) obj1.velocity(-7,0) obj2.velocity(-7,0) wait_time(2000) se_ending.play wait_time(3000) # アクティビティフィードを流す result = send_activity_feed("SCORE:#{score}"); # 結果をデバッグログに出力する # 公開したゲームでは見えません debug_log(result ? "フィードを流した" : "フィードを流さなかった") game_clear #ending(score) end # スコアの加算を行っている部分 score += 10 # ループの回数を数えている部分 count += 1 end render do #調整用にあたりの範囲を表示 #player_sprite.show_debug_body #jama_sprite.show_debug_body #ground_sprite.show_debug_body #exit_sprite.show_debug_body # ボールを回転させている ground_sprite.angle (ground_sprite.angle + 2)%360 # スコアの表示 score_sprite.text("SCORE:#{score}") end end #def ending(score) #end start_scene "start" sprite 'chara' do image 'chara_00' origin :center animation 'walk',[0,1,2,3,2,1], 10, true end sprite 'ground' do image 'ground_00' end sprite 'jama' do image 'jama_00' origin :center end sprite 'exit' do image 'exit_00' end text 'score_00' do origin :left_top font_size 20 color "#FFFFFF" end
コード一覧
  • start.rb
投稿者:User icon mini taki 対象Lv1 公開日:2019年04月30日 22:26:22
プレー内容を公開する

違反を通報する

コメントする

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

コメント一覧

Material 303531 2 mini mochi3kan(投稿日:2019/05/01 13:15, 履歴)
タイミングよくライオンの上に乗ったまま
流されてゆきました!
悲鳴が妙にリアルでいいですね!
User icon mini taki(投稿日:2019/05/12 22:52, 履歴)
コメントありがとうございます
いい素材をお借りできたので
事前に考えていたより良くなりました
Cdv30200 aoi icon mini aoihikawa(投稿日:2019/05/01 10:24, 履歴)
がぶー、と
一緒に流れていくところが
シュール(w
User icon mini taki(投稿日:2019/05/12 22:50, 履歴)
コメントありがとうございます
ゲームオーバー時の動きをどうするか悩んで
あの様な感じになりました
プレー履歴

全てのプレー履歴を見る

新着レビュー

全てのレビュー

フォロー/シェア

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

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

リンク

プレイヤー

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

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