
動けるようになった次に、ちょっとだけゲームっぽくしたい。
Scratchでネコが左右に動けるようになると、次にやりたくなるのが「ゲームっぽい何か」を足すことだったりしませんか。
自分もまさにその状態で、ジャンプやステージ作りも気になるけど、いきなり全部やろうとすると頭がこんがらがりそう…と感じました。
なので今回は、いったん背伸びしすぎずに、横移動だけでも達成感が出る仕組みを作ってみました。
やることはシンプルで、ベルを取ったらスコアが増えるだけです。でも、これだけで「あ、ゲームになってきた!」って思えます。
当たり判定を作成する、全体像
最初は「ベルに触れたらスコア+1」で作ろうとしました。
初めということで最初はシンプルに考えるようにしました。
そこで今回は割り切って、横移動だけで取れるように条件を簡単にして進めることにしました。
最初に全体像はこちら。
下記画像はベルのブロックです。スプライトごとにブロックを設定することができます。

こちらはネコ側のブロックです。単純な横移動のみで、ジャンプも実装していません。
また、今回はやっていませんが背景にも実装することができます。

「スコア」という変数を用意する
次に「スコア」という変数を用意します。変数のカテゴリから「変数をつくる」をクリックします。

その箇所をクリックすると変数名を入力するウィンドウがでるので、
そこに「スコア」と記入し、「すべてのスプライト用」にチェックをいれたままにします。
これでOKボタンを押して完了です。

ベルはクローンで増やして、判定は“横位置だけ”にする
今回のポイントは2つです。とはいえ難しいことはしていなくて、「ややこしい部分を減らした」感じです。
まずベルは、スプライトを何個もコピーして増やすんじゃなくて、**クローン(分身)**で3つ出す方法にしました。
これにすると、ベルの数を増やしてもスクリプトが散らからないので、後から直すときも気がラクです。
最初はベル本体を隠すことをします。そうすればクローンだけで管理することができます。

次にベルを三つ複製するブロックを作成します。

そしてもうひとつが当たり判定です。今回は「触れた」ではなく、ネコとベルのx座標が近いなら取れたことにする方式にしました。
言い方を変えると、「横位置が重なったら取れる」って感じです。
イメージとしては、ネコとベルの横の距離が25より小さければOK、という判定にしています。OKだったらスコアを1増やして、そのベル(クローン)だけ消します。

横移動だけでも“集めるゲーム”っぽくなる
ここまでできると、やっていること自体は本当にシンプルです。ネコが左右に動けて、ベルが3つ並んでいて、近づいて取るとスコアが増える。取ったベルだけ消える。
でも、不思議なもので、これだけで一気に「遊べる感じ」が出てきます。
作ってる側としても、スコアが増えるのが見えるので気持ちいいですし、「次はジャンプ入れたいな」「クリア判定も入れたいな」って自然に次の目標が見えてきました。
自分の場合:ここだけ気をつけたらスムーズでした
作ってみて「ここは先に知っておくとラクだな」と感じたポイントが2つあります。
ひとつ目は、スコアを0に戻す処理はネコ側に置いたことです。
ベル側に置いても動くんですが、今後ベルを増やしたときに初期化が複数回走る可能性があるので、役割としてはネコ(もしくはステージ)に置く方がスッキリします。
(ここにスクショ:ネコ側「緑の旗→スコアを0にする」+左右移動)
もうひとつは、当たり判定の数字(今回は25)を「正解探し」しすぎないことです。
ネコの移動が速いと取り逃しやすいので、その場合は25を30や40に上げるだけで体感がかなり良くなります。ここはゲームの雰囲気に合わせて調整するのが楽しいところでした。
まとめ:今回はここまでで十分。次回はジャンプ→クリア判定へ
今回は詰め込みすぎないように、横移動だけで成立するところまでに絞りました。
それでも、「スコアが増える」「ベルが消える」だけでちゃんとゲームっぽくなるので、個人的にはかなり満足感があります。
次回はこの続きで、ジャンプ(重力)を入れて、空中のベルも取れるようにして、最後に「全部取ったらクリア!」までつなげたいと思っています。
2回構成にすると、読んでくれる人にも伝わりやすいですし、自分も整理しやすいな…というのが今回の気づきでした。
-
Scratchでネコを横に動かそう!初心者でもできる2つの移動パターン
記事がありません