【Scratch】すり抜けずにブロックに乗る方法:色判定なし

乗れるブロックの作り方 ゲーム

どうもー!マミィです!

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

スクラッチで、ブロックの上に乗りたいんだけど、すり抜けないで作る方法が知りたい!

マミィ
マミィ

キャラクターとブロックのy座標をうまく使うことで、上に乗ることができます!

ブロックをすり抜けないで、ブロックを壊したり、壊せないブロックの作り方を前回解説しました!

ブロック系の続きで、ブロックに乗りたいですよね!!

色判定は使わず、座標を使って上に乗ったかを判定しています。

この記事の内容です。壊せないブロックの部分と同じ話も出てきます!

  • キャラクターの「ジャンプ」とブロックを「すり抜けない」仕組みの作り方
  • ブロックの上に乗ったかどうかの判定をする方法

この記事を読むと、ジャンプしたときに、ブロックの上に乗り、歩いたりジャンプしたりすることができます!

今回作った作品です↓※ブロックを壊すときだけ音がでます。

乗れるブロック、壊せるブロック、壊せないブロック

【スクラッチ】キャラクターの動かし方

上矢印キー:ジャンプ
左矢印キー:左に動く
右矢印キー:右に動く

キャラクターと背景は著作権フリー素材(CC0)を使っています。

素材のDL方法と取り込み方が知りたい人はこちらを参考にしてください。

クリアな音でゲームやプログラミングを楽しもう!

周りの音を遮断して、マイクラ音ブロック演奏に最適です。

※リモート授業・会議にも使える!

スポンサーリンク

キャラクターの「ジャンプ」とブロックを「すり抜けない」仕組みの作り方

前回と同じ解説ですが、基本の動きなのでおさらいします!

今回使うスプライトは、キャラクターと、ブロック、背景画像のみ。

※ブロックは同じ画像を使いまわしています。

キャラクター
壊れるブロック
背景画像

※上のGIFファイルを、画像右クリックで保存できます。

動く画像(GIF)をスクラッチに取り込むと、1枚ずつ動きのコスチュームが自動で分かれます。

各スプライトの名前を、boy(キャラクター)、block-brown(茶色ブロック)、block-blue(青色ブロック)、block-purple(紫色ブロック)と名前をつけています。

キャラクターを地面の位置まで下にずっと動かす

①boyが画面の下に行かないように、地面の位置を決めておく

boyの位置をまず決めて、「地面のy座標」にboyの「y座標」を入れます。

ここでは、-130が入ります。

②決めた地面の位置より小さくなるまでキャラクターを下に移動させる

地面のy座標の位置まで、常にキャラクターを下に動かしています。

3つのブロック全部に触れていないときは以下のことをしています。

  1. 変数「ブロックに触れた」を0にして、ブロックに触れているのかどうかを変数に保存
  2. キャラクターが地面の位置に下がってくるまでy座標を-5ずつ変えていく。

これで、常に、ブロックに触れているのかをチェックして、地面の位置まで下がってくる重力の動きが再現できます。

ジャンプのときは、上に動かす量を大きくする

ジャンプをするように、上に動かしたいときは、下に降りて来る移動量の2倍(y座標を10ずつ変える)で増やせば上に向かっていきます。

1回の移動量は下に移動する量の2倍で繰り返す回数を多くすることで、ジャンプできる高さが変わります。

ブロックをすり抜けないようにするには、触れたときに上に動かすのをやめる

「ブロックに触れた」の変数の意味は、以下になります。

  • ブロックに触れた=0:触れていない
  • ブロックに触れた=1:触れた

ブロックに触れてないときにだけ、上に移動させています。

下からキャラクターがブロックに当たったときには、上に移動しないので、すり抜けることはありません。

ブロックの上に乗ったかどうかの判定をする方法

キャラクターを常に下に移動していますが、ブロックの上にのったかどうかを判断して、ブロックの上に乗っていないときだけ、下に移動しています。

この「上にのった」を0以外にすれば、下に移動しません。

ブロックに乗ったようにみせるために、ブロックに触れた判定をして、「上にのった」を1にします。

ブロックとの判定する位置を判定:y座標を利用

茶色ブロックでの設定です。

  • 茶色ブロックを画面の中心に配置する
  • 茶色ブロックの高さ(すべてのスプライトで使える変数)に、茶色のブロックの「y座標」をいれておく

上に乗ったように見せるために、判定位置を少し上に調整します。

茶色のブロックの高さ(y座標)+30

こうすることで、キャラクターがブロックが上に当たったのか、下から当たったのかが判断つくようになります。

マミィ
マミィ

スプライトの大きさで、「30」の数字が変わってくるので、自分で使うものの大きさに合わせて変えてくださいね!

青色ブロックも、紫色ブロックにも同じ上にのった判定をいれています。

まとめ:ブロックの上に乗る方法

以上、ブロックに乗る方法を解説しました!

やることのポイントをまとめると・・・

  • ブロックのy座標を判定する変数にとっておく
  • 変数「上にのった」が「0」の間は、キャラクターを下に移動させる
  • キャラクターとブロックが触れつつ、ブロックの上部に当たったときに「上にのった」かの判断の「1」にする
  • 1になったときに、下に移動しないので、ブロックの上に乗っているようにみせる

実際にコードを見たほうがいいという人は、スクラッチページを参考にしてください。

乗れるブロック、壊せるブロック、壊せないブロック

マミィ
マミィ

障害物を判定できると、ゲームに応用できますね!

楽しんでプログラミングしましょう〜

ブロックを下から当たった時にブロックを壊したり、壊せないブロックを作る方法は別の記事にしています。

プログラミングができる環境は整っていますか?

2025年の大学共通入試より、プログラミングが教科に追加されます。

時間のある今のうちに、楽しく・正しくプログラミングスキルを身に付けることは大切なことです。

子供にプログラミングをさせたいけど、親もできなくて教えられない!

どうしたらいいの??

  • パソコン操作が苦手(不慣れ)
  • 子供が使えるパソコンが家にない
  • 親がプログラミングの知識がなくて教えてあげられない

そんな悩みを解決してくれるプログラミングスクールをまとめました!

現役プログラマーが教える!3パターンから選ぶ子供のプログラミング教室!

そして、現場にいる立場から言わせてもらうと「システムを作る人」ではなくても、プログラミングの基礎を知っているかどうかで仕事にかなりの差がつきます。

無料体験などを利用して、プログラミングが向いているのかをお試ししましょう。

マミィ
マミィ

子供がプログラミングに興味があるのに、教えてあげられる人がいない!という子はほんとにもったいない!!と思います。

普通のプログラミングを自ら学ぶ「楽しい!」と思えるきっかけ作りをしてあげたいですね。

タイトルとURLをコピーしました