バッテリークリッカー #3

バッテリークリッカー #3
ok-scratch

スクラッチに挑戦している皆さん、どうも!スクラッチコーチです。

クリックでポイントを稼ぎショップでアップグレードする本格クリッカーゲームをスクラッチで作ろう。パーティクルエフェクト・カスタム数字表示・イージングアニメーションなど本格テクニック満載!

スクラッチで作る作品について

バッテリーをクリックしてポイントを稼ぎ、ショップでアップグレードを購入するインクリメンタルクリッカーゲーム。3ページのショップ、パーティクルエフェクト、数字ディスプレイ、ボーナスアイテムなど多彩な機能を持つ。

今回の目標

ショップページ3の3アイテム(超大型オートクリッカー・クリック倍率アップ・指数型オートクリッカー)、スライドイン広告バナー、3段階の疑似物理シミュレーションで動く金の電気ボーナスアイテムを実装してゲームを完成させる。

チュートリアルの元になった作品

#1巨大クリック倍率アップグレード

ok-scratch ok-scratch
100万クリックで買える究極のクリック倍率アップグレードだよ。購入すると「★1クリックの獲得数」が一気に10億増えるんだ。
step-105

イベント このスプライトが押されたとき で、「★クリック数」が1000000以上かつマウスが押されていてアイテムに触れている条件をチェックするよ。条件が揃ったら100万を差し引いて、 変数 ( ) を ( ) ずつ変える で「★1クリックの獲得数」を+1000000000するんだ。

ショップアイテム2が+50、アイテム5が+1000だったのに対して、一気に10億という桁違いの数字になったね。ゲーム後半のインフレに対応するための設計だよ。

#2ショップアイテム8の購入保護

ok-scratch ok-scratch
クリック数が100万未満のときの保護処理だよ。
step-106

イベント このスプライトが押されたとき で条件をチェックして、 変数 ( ) を ( ) にする で「★クリック数」をそのまま維持するんだ。

#3ショップアイテム8のページ3表示

ok-scratch ok-scratch
ページ3に切り替わったときにアイテムを表示する処理だよ。
step-107

イベント ( ) を受け取ったとき で「次のショップ」を受け取り、「★ショップページ」が3のときに 見た目 表示する で表示するよ。

#4ショップアイテム8の表示設定

ok-scratch ok-scratch
表示時のレイヤーとコスチュームの設定だよ。
step-108

見た目 ( ) へ移動する で最前面に出して、 見た目 コスチュームを ( ) にする でコスチュームを設定するんだ。

#5ショップアイテム8のページ切替(非表示)

ok-scratch ok-scratch
ページ2に戻ったらアイテムを隠す処理だよ。ショップアイテム7と同じ構造だね。
step-109

イベント ( ) を受け取ったとき で「前のショップ」を受け取り、「★ショップページ」が2のときに 見た目 隠す で隠して 見た目 ( ) へ移動する で最背面に送るよ。

#6ショップアイテム9の配置

ok-scratch ok-scratch
最後のショップアイテムを作るよ。ショップアイテム9はゲーム最強のアイテムで、なんと毎秒の自動獲得数が指数的に倍増していく「指数型オートクリッカー」なんだ。

準備

スプライト「ショップアイテム9」を開く

ショップアイテム9ショップアイテム9
スプライトについて
ショップページ3の指数型オートクリッカー(CPS自乗)
どんな役割か
最後のショップアイテムとして、指数的に増える最強のオートクリッカーを作るよ。9億9千万クリック必要だけど、毎秒の獲得数がどんどん倍になっていくんだ。

実装

step-110

イベント greenflag が押されたとき 動き x座標を ( ) 、y座標を ( ) にする を使って、x:53、y:-97の位置に配置するよ。

#7ショップアイテム9の初期表示

ok-scratch ok-scratch
旗クリック時の初期表示を設定するよ。
step-111

見た目 表示する で表示して、 見た目 ( ) へ移動する で最前面、 見た目 コスチュームを ( ) にする でコスチュームを設定するよ。

#8ショップアイテム9のホバー演出

ok-scratch ok-scratch
最後のアイテムにも同じホバーアニメーションをつけるよ。これでショップの9つ全部が統一された動きになるんだ。
step-112

制御 ずっと 制御 もし ( ) ならでなければ 調べる ( ) に触れた を使って、マウスに触れているときはサイズ90、離れているときはサイズ80に向かってイージングで変化させるよ。

#9指数型オートクリッカーの購入

ok-scratch ok-scratch
ここがこのゲームの最終兵器だよ。9億9千万クリック以上必要だけど、購入すると「★1秒の自動獲得数」に初期値として1000万が追加されるんだ。
step-113

イベント このスプライトが押されたとき で、 演算 ( ) > ( ) で「★クリック数」が990000000を超えているかチェックするよ。条件が揃ったら 変数 ( ) を ( ) ずつ変える で「★クリック数」を-1000000000して、「★1秒の自動獲得数」を+10000000するんだ。

でも本当の力は次のステップにあるよ。初期の1000万CPSはあくまでスタートラインなんだ。

#10指数的な自動倍増

ok-scratch ok-scratch
他のオートクリッカーは「★クリック数」にCPSを加算していたけど、ショップアイテム9は違うよ。なんと「★1秒の自動獲得数」に「★1秒の自動獲得数」自身を加算するんだ。つまりCPSが毎秒倍になっていくよ。
step-114

内側の 制御 ずっと 制御 ( ) 秒待つ を1秒待って、 変数 ( ) を ( ) ずつ変える で「★1秒の自動獲得数」に「★1秒の自動獲得数」を加算するよ。1000万→2000万→4000万→8000万と、CPSが爆発的に増えていくんだ。

しかもCPSはグローバル変数だから、他のオートクリッカースレッドもこの倍増したCPSを使って「★クリック数」を増やすよ。すべてのスレッドが連動して、ゲーム全体のクリック増加速度が指数的に加速していくんだ。

#11ショップアイテム9の購入保護

ok-scratch ok-scratch
クリック数が10億未満でマウスが離れているときの保護処理だよ。
step-115

イベント このスプライトが押されたとき で条件をチェックして、 変数 ( ) を ( ) にする で「★クリック数」を維持するんだ。

#12ショップアイテム9のページ3表示

ok-scratch ok-scratch
ページ3に切り替わったときにアイテムを表示する処理だよ。
step-116

イベント ( ) を受け取ったとき で「次のショップ」を受け取り、「★ショップページ」が3のときに 見た目 表示する で表示するよ。

#13ショップアイテム9の表示設定

ok-scratch ok-scratch
表示時のレイヤーとコスチュームの設定だよ。
step-117

見た目 ( ) へ移動する で最前面に出して、 見た目 コスチュームを ( ) にする でコスチュームを設定するんだ。

#14ショップアイテム9のページ切替(非表示)

ok-scratch ok-scratch
ページ2に戻ったらアイテムを隠す処理だよ。これで全9つのショップアイテムのページ管理が完成したね。
step-118

イベント ( ) を受け取ったとき で「前のショップ」を受け取り、「★ショップページ」が2のときに 見た目 隠す で隠して 見た目 ( ) へ移動する で最背面に送るよ。

#15広告バナーの準備

ok-scratch ok-scratch
ショップが完成したから、次はゲーム画面の雰囲気を盛り上げる広告バナーを作るよ。10回繰り返すアニメーションで、ランダムなコスチュームとタイミングで登場するんだ。

イベント greenflag が押されたとき から 制御 ( ) 回繰り返す を10回で、 見た目 コスチュームを ( ) にする 演算 ( ) から ( ) までの乱数 を使って1〜4のランダムなコスチュームに切り替えるよ。その後 制御 ( ) 秒待つ で1〜5秒のランダムな間隔を空けるんだ。

#16広告バナーのスライドイン

ok-scratch ok-scratch
バナーが画面外からスライドして入ってきて、しばらく表示してから去っていくアニメーションだよ。

動き x座標を ( ) 、y座標を ( ) にする でx:-403、y:-132の画面外にスタートして、 動き ( ) 秒でx座標を ( ) に、y座標を ( ) に変える で1秒かけてx:-147、y:-139の見える位置までスライドインするよ。 制御 ( ) 秒待つ で4秒間表示した後、再び 動き ( ) 秒でx座標を ( ) に、y座標を ( ) に変える で1秒かけて画面外に戻るんだ。

ランダムなコスチュームとランダムな出現間隔のおかげで、毎回違うタイミングで違うバナーが出てきて、ゲームが賑やかになるよ。

#17金の電気の出現設定

ok-scratch ok-scratch
最後に作るのはボーナスアイテム「金の電気」だよ。ランダムなタイミングで画面に出現して、マウスでキャッチするとボーナスがもらえるんだ。

準備

スプライト「金の電気」を開く

金の電気金の電気
スプライトについて
ランダムに出現する落下ボーナスアイテム。キャッチするとFPSやパーセントがアップ
どんな役割か
ランダムに出現する金の電気ボーナスアイテムを作るよ。上に飛び出して落ちてくるアニメーションがあって、マウスでキャッチするとボーナスがもらえるんだ。3段階の物理運動で自然な動きを作るよ。

変数「出現間隔(最小)」を追加

金の電気の出現間隔の最小値

変数「出現間隔(最小)」を追加

変数「出現間隔(最大)」を追加

金の電気の出現間隔の最大値

変数「出現間隔(最大)」を追加

実装

step-121

イベント greenflag が押されたとき で、 変数 ( ) を ( ) にする で「出現間隔(最小)」を30、「出現間隔(最大)」を120に設定するよ。 見た目 コスチュームを ( ) にする でコスチュームも初期化しておくんだ。

#18金の電気のクローン生成

ok-scratch ok-scratch
ランダムな間隔でクローンを生成し続けるスポナーを作るよ。30〜120秒に1回、金の電気が出現するんだ。
step-122

制御 ずっと の中で 制御 ( ) 秒待つ 演算 ( ) から ( ) までの乱数 を使って、「出現間隔(最小)」から「出現間隔(最大)」の間でランダムに待つよ。待ったら 制御 ( ) のクローンを作る で自分自身のクローンを作るんだ。

#19クローンの打ち上げ準備

ok-scratch ok-scratch
クローンが生まれたら、まず打ち上げの準備をするよ。画面下部のランダムな位置からスタートして、上に飛び出す仕組みなんだ。

準備

変数「Y速度」を追加

金の電気クローンのY軸速度

変数「Y速度」を追加

実装

step-123

制御 クローンされたとき で始まり、 動き x座標を ( ) にする で-150〜150のランダムなX位置に配置するよ。 動き y座標を ( ) にする でy:-150の画面下部にセット、 動き ( ) 度に向ける で向きを90度にして、 変数 ( ) を ( ) にする で「Y速度」を0にリセットするんだ。

#20フェーズ1:加速上昇

ok-scratch ok-scratch
金の電気の動きは3段階に分かれているよ。まずフェーズ1は加速しながら上に飛び出す動きだよ。
step-124

制御 ( ) 回繰り返す を20回で、毎回 変数 ( ) を ( ) ずつ変える で「Y速度」を+0.5ずつ増やすよ。 動き y座標を ( ) ずつ変える で「Y速度」分だけY座標を変えて、 動き ( ) ( ) 度回す で「Y速度」÷10の角度だけゆっくり回転させるんだ。速度が0から10へと加速しながら上昇するよ。

ok-scratch ok-scratch
この3段階の動きは、現実世界の「放物線運動」を再現しているんだ。ボールを上に投げると、最初は勢いよく上がって、だんだんゆっくりになって、最後に落ちてくるよね。物理の授業で習う「速度=初速+加速度×時間」という式を、Scratchの変数操作だけでシミュレーションしているんだよ。

#21フェーズ2:減速

ok-scratch ok-scratch
フェーズ2は上昇がだんだんゆっくりになって止まる段階だよ。フェーズ1で加速した速度を、今度は減速させていくんだ。
step-125

制御 ( ) 回繰り返す を20回で、「Y速度」を-0.5ずつ減らすよ。速度が10から0に向かって減速しながら、まだ上に移動し続けるけどどんどんゆっくりになるんだ。 動き ( ) ( ) 度回す の回転速度も「Y速度」÷5で、フェーズ1より速く回るよ。

#22フェーズ3:急落下

ok-scratch ok-scratch
最後のフェーズは重力に引かれて落ちていく動きだよ。加速度が-1とフェーズ1・2より大きいから、急速に落下するんだ。
step-126

制御 ( ) 回繰り返す を25回で、「Y速度」を-1ずつ減らすよ。速度が0から-25へと急激にマイナスになるから、アイテムは加速しながら落ちていくんだ。 動き ( ) ( ) 度回す で回転も速くなって、落下感が出るよ。

フェーズ1の加速度+0.5、フェーズ2の-0.5、フェーズ3の-1と、段階ごとに力の強さを変えることで自然な放物線の動きを表現しているんだね。

#23キャッチ待ちと透過効果

ok-scratch ok-scratch
金の電気のクローンには、動きのスクリプトと同時にもう1つのスクリプトが並行して動いているよ。こちらはプレイヤーがキャッチするのを待つ仕組みだよ。
step-127

制御 クローンされたとき からもう1つのスクリプトを作るよ。 制御 ( ) まで繰り返す で、 調べる ( ) に触れた でマウスに触れていて、かつ 調べる マウスが押された でマウスが押されるまでループするんだ。ループ中は 見た目 ( ) の効果を ( ) にする でゴースト効果をY座標に連動させて、高い位置にいるほどはっきり見えて、低い位置にいると薄くなるようにするよ。

#24キャッチ時のランダム報酬

ok-scratch ok-scratch
金の電気をキャッチしたら、50%の確率でボーナスがもらえるよ。当たりかハズレか、ガチャのようなドキドキ感を演出しているんだ。

準備

変数「ランダムサプライズ」を追加

ランダムサプライズの種類(1または2)

変数「ランダムサプライズ」を追加

変数「★FPS」を追加

FPS値(ボーナス効果)

変数「★FPS」を追加

変数「★秒あたりパーセント」を追加

秒あたりパーセント(ボーナス効果)

変数「★秒あたりパーセント」を追加

実装

step-128

変数 ( ) を ( ) にする で「ランダムサプライズ」に 演算 ( ) から ( ) までの乱数 で1か2を入れるよ。 制御 もし ( ) ならでなければ で値が1なら当たりで、 変数 ( ) を ( ) にする で「★FPS」を「★mAh」×1.3に、「★秒あたりパーセント」を現在値×1.3にセットしてパワーアップするよ。2ならハズレで何も起きないんだ。

#25キャッチ後の消滅演出

ok-scratch ok-scratch
ボーナスを受け取った後、金の電気がパッと弾けるように消えるアニメーションを作るよ。
step-129

制御 ( ) 回繰り返す を20回で、 見た目 大きさを ( ) ずつ変える でサイズを(250-現在のサイズ)÷5ずつ大きくしながら、 見た目 ( ) の効果を ( ) ずつ変える でゴースト効果を10ずつ増やすよ。最後に 制御 このクローンを削除する でクローンを削除するんだ。

サイズの計算が(250-size)÷5になっているのは、イージングの仕組みだよ。最初は一気に大きくなって250に近づくほどゆっくりになるから、弾けるような勢いのある膨張アニメーションになるんだ。

まとめ

ゲーム全体の完成だよ!特に金の電気ボーナスは「加速→減速→落下」の3段階の速度変化で放物線的な動きを実現していて、疑似物理シミュレーションの基礎を体験できる大事なパートだったね。全130ステップを通じて、イージング・クローンパーティクル・カスタム数字表示・スレッドスタッキング・疑似物理と、本格的なテクニックをたっぷり学べたよ!今回の知識を活かして、自分だけのオリジナルクリッカーゲームを作ってみよう!

このスクラッチゲームの作り方への質問受付中! このスクラッチゲームの作り方への質問受付中!
チュートリアルで分からないことがあったらスクラッチAI「アスクラッチ」で何でも聞いてみよう!キミの作品の「中を見て」具体的にバグの調査をAIが手伝ってくれるよ!
アスクラッチで質問する
ブクマよろしくお願いします! ブクマよろしくお願いします!
どんどん追記・更新していくので、ブックマークやシェアよろしくお願いします!