どうもー!マミィです!
フリーランスプログラマーをしながら、「スクラッチプログラミング」・「マインクラフト」の真似したいと思う、役に立つ情報を中心に発信しています!

スクラッチで、マリオのクリボウとかボスの踏みつけて敵を倒すやり方が知りたい!
「触れる」だけじゃだめだよね・・・?

上から踏みつけてダメージを与えて、横から当たると自分がダメージを受けるというやり方をお伝えします!
作る時のポイントは、「触れる」だけではなく、「y座標の位置」も判断に加えます!

こんな感じで、上から踏みつけると、敵にダメージを与えられて、横から当たると自分がダメージをくらいます。
解説する内容です!
- 敵を踏みつけて倒す判定の作り方
- ネコが敵に当たったときの動きの作り方
- 敵を踏つけたときの「敵の動き」の作り方
- 敵を左右にランダムに動かす方法
- ネコがジャンプ、左右に動く方法
この記事を読むと、マリオで敵を倒すときに踏みつけて倒す動きが作れます!
マリオのボスで左右にランダムに動く作り方も簡単にできますよ!
↓今回の作品です。※音が出るので注意してください。
スクラッチサイト→【マリオのボス風】踏みつけて倒す敵!
YouTubeでも動作を確認できます↓
最近購入した富士通のPCがとても快適だったので、おすすめします↓
※2022年11月にAmazonで買いました。ゲームの録画もワンタッチでできます。
スクラッチも教育版マインクラフトもこのパソコンで作ってます。
敵を踏みつけて倒す判定の作り方

ネコのスプライトのコードに入れます。

もし「敵(Frank)に触れた」かつ、「-40<y座標」 で踏みつけたと判断しています。
「変数=0」は、当たったあとに少し時間を取って、連続して踏みつけた判定をしないようにしています。※後で解説します。

y座標が-40の位置で判断しています。
【踏みつけた判定】
-40より上(-40<y座標)なら、敵を踏みつけた。
【当たった判定】
-40より下(y座標<-40)なら、敵に当たった。
ネコが敵に当たったときの動きの作り方

- 敵に当たったときのコスチュームを作っておく
- ネコのライフの変数を作っておく(ネコのライフ)
- 当たったあとにすぐに判定をしないようにするフラグ用の変数を作っておく
- 敵に当たったとき→ネコのライフを減らす
- ネコのライフが0かどうかをチェックする
このコードを一つずつ解説していきます!
敵に当たったときのコスチュームを作っておく

コスチューム1を複製して、コスチューム3を作っています。筆ツールで汗を追加。

敵に当たったら、作ったコスチュームにします。
ネコのライフ、フラグ用の変数を作っておく
変数を2つ作っておきます。(「変数」はもともとあるやつを使ってます)

ここで使う変数は、以下の2つです。
- ネコのライフ
- 変数
敵に当たったとき→ネコのライフを減らす

敵に当たると、ネコのライフを-1しています。
ネコのライフが0かどうかをチェックする
ネコのライフを−1 した後に、ライフの数をチェックしています。

【負け判定】
ネコのライフ<1
コスチュームを負けたものに変えたり、負けたと言わせた後に「すべてを止める」でゲーム終了です。
【ネコのライフが0以上のとき】
- フラグ用の変数を1にする
- 1秒待つ
- フラグ用の変数を0にする
フラグ用の変数を1にすることで、ネコと敵が当たった判定が1秒間だけされなくなります↓


これを入れないと、踏みつけたあとに、ネコが敵に当たったとすぐに判定されてしまいます。
敵を踏つけたときの「敵の動き」の作り方

ネコが敵に当たったときと同じような作りです。
- 踏みつけられたときのコスチュームを作っておく
- 敵のライフの変数を作っておく(敵のライフ)
- 当たったあとにすぐに判定をしないようにするフラグ用の変数を作っておく(ネコのときに使ったものと同じもの)
- 踏みつけられたとき→敵のライフを減らす
- 敵のライフが0かどうかをチェックする
踏みつけられたときのコスチュームを作っておく

frank-dのコスチュームに筆ツールで汗を描き足しました!
敵のライフ、フラグ用の変数を作っておく
敵のライフを管理する「敵のライフ」の変数を作っておきます。

ここで使う変数は2つです。
- 敵のライフ
- 変数(ネコのコードでも使う共通の変数)
踏みつけられたとき→敵のライフを減らす

踏みつけられると、敵のライフを-1にしています。
敵のライフが0かどうかをチェックする
敵のライフを-1にしたら、ライフが0になったのかをチェックします。

【敵を倒した判定】
敵のライフ<1
- コスチュームを負けた画像にする
- だんだん透明度をあげて、透明にする(幽霊効果)
- すべてを止めて、ゲーム終了
【敵のライフが0以上のとき】
- フラグ用の変数を1にする
- 1秒待つ
- フラグ用の変数を0にする
フラグ用の変数を1にすることで、ネコと敵が当たった判定が1秒間だけされなくなります↓


これをいれることで、ネコと敵が当たった判定が、1秒間されなくなります。
→連続で判定されてしまう動作を防ぎます!
敵を左右にランダムに動かす方法


敵を端から端までランダムに動かしています。

「変数=0」:ネコと敵が当たって1秒間以外の時(当たると1秒間変数は1になる)
1秒でx座標を「-240から240までの乱数」に、y座標を-100に変える
左端のx座標:-240
右端のx座標:240
-240〜240の間のどれかの数字が入ってくるので、1秒間でその場所にいくため、現在地より遠くに行くときは速いスピードで動き、近くならゆっくり動きます。
ネコがジャンプ、左右に動く方法
ジャンプさせる方法

- 変数で「ジャンプの高さ」を作る
- 「ジャンプの高さ」を決める(ここでは23)
- 「ジャンプの高さ」×2 −1(23×2-1 =45)回繰り返す
- 「ジャンプの高さ」を-1する
- y座標を「ジャンプの高さ」ずつ変える
ジャンプの作り方は別の記事で詳細に解説しているので、参考にしてください。
左右に動かす方法
ネコは矢印キーで動かすことができます。

ただこのままだと、-90度に向けたときにひっくり返ってしまいます。
どこでもいいので回転方法を「左右のみ」にしておくとひっくり返りません。

上から踏みつけて倒す作り方:まとめ
- 上から踏みつけたときだけ、相手にダメージを与える
- 横から当たると自分にダメージをくらう
- ダメージを与えたときに、連続で判定をしないための工夫
- 敵のランダムな動かし方
以上、マリオのボスを倒す時の作り方を解説しました!
y座標の位置を判定に加えることで、上から当たったのか、横から当たったのかが作れます!

ぜひ作ってみてくださいね〜!
スクラッチサイト→【マリオのボス風】踏みつけて倒す敵!