スクラッチプログラミング - キャラクターをうごかす|ジャンプ・かべキック
ジャンプや左右(さゆう)にうごかす方法(ほうほう)
今回(こんかい)は、Scratch (スクラッチ)でキャラクターを操作(そうさ)する方法(ほうほう)について解説(かいせつ)します。
ジャンプや左右(さゆう)にうごかすことはもちろん、壁(かべ)をキックしてのぼれるようにします。プラットフォーマーなどをつくるときに利用(りよう)できるスクリプトなので、ぜひマスターしていろいろなゲームをつくれるようになりましょう。
サンプルプロジェクト
最初(さいしょ)に、下(した)にあるサンプルプロジェクトで、キャラクターのうごきを確認(かくにん)しておきましょう。
うごくはやさを変数(へんすう)できめる
キャラクターをうごかすときは、一定(いってい)のはやさではなく、だんだんはやくなったり、だんだんゆっくりになったりするようにします。そのためにつかう変数(へんすう)を用意(ようい)しましょう。
- 左右(さゆう)のはやさをきめる変数(へんすう)
x速度(そくど)
- 上下(じょうげ)のはやさをきめる変数(へんすう)
y速度(そくど)
- キャラクターの最初(さいしょ)の位置(いち)
このあとつくっていくスクリプトは、どんなうごきをあらわすのかをわかりやすくするために、うごきの種類(しゅるい)ごとにブロック定義(ていぎ)でまとめていきます。
ブロック定義(ていぎ)については、以下(いか)の記事(きじ)で紹介(しょうかい)しているので参考(さんこう)にしてください。
重力(じゅうりょく)
ブロック定義(ていぎ)でつくる1つめのブロックは、重力(じゅうりょく)
です。
キャラクターに重力(じゅうりょく)をあたえると、次(つぎ)のようなメリットがあります。
- ジャンプのうごきがよりリアルになる
- たかい所(ところ)からひくい所(ところ)へ自動的(じどうてき)におちるようになる
定義(ていぎ) 重力(じゅうりょく)
の下(した)に次(つぎ)のようにブロックをつなげて、下(した)へうごく量(りょう)がだんだんふえるようにしましょう。
たとえば、この変数(へんすう)の値(あたい)を -0.5
にすると落下速度(らっかそくど)はおそくなり、-1.3
のようにするとよりはやく下(した)へおちるようになります。
地面(じめん)か天井(てんじょう)にあたる
ブロック定義(ていぎ)でつくる2つめのブロックは、地面(じめん)か天井(てんじょう)にあたる
です。このブロックは、「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくってください。
キャラクターが「地面(じめん)にあたったのか」または「天井(てんじょう)にあたったのか」、2つの場合(ばあい)で処理(しょり)をわけていきましょう。
最初(さいしょ)に、プラットフォームにふれたかどうかを判定(はんてい)します。
次(つぎ)は、地面(じめん)にあたるうごきです。重力(じゅうりょく)でおちてきたときに、下(した)にあるプラットフォームにうまらないようにしましょう。
- 下(した)へうごいているときの
y速度(そくど)
の値(あたい)はマイナスです。 -1
をかけて、下(した)へのうごきと逆方向(ぎゃくほうこう)へうごかします。
つづいて、天井(てんじょう)にあたるうごきです。ジャンプしたときに、上(うえ)にあるプラットフォームをとおりぬけないようにしましょう。
- 上(うえ)へうごいているときの
y速度(そくど)
の値(あたい)はプラスです。 - 天井(てんじょう)にふれない位置(いち)まですこしずつ下(した)へうごかします。
yざひょうを -1 ずつかえる
をつかってすこしずつ下(した)へうごかす理由(りゆう)は、天井(てんじょう)の下端(したはし)の位置(いち)ピッタリではねかえるようにみせるためです。また、このブロックを画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する理由(りゆう)は、このすこしずつのうごきを一瞬(いっしゅん)でおわらせるためです。
最後(さいご)に、上下(じょうげ)のはやさをリセットしましょう。
地面(じめん)でバウンドさせる?ピタッととめる?
さて、このスクリプトでは、上(うえ)からおちてきたときに、地面(じめん)ですこしバウンドするようになっています。地面(じめん)にピタッととまるようにしたい場合(ばあい)は、天井(てんじょう)にあたるときとおなじようにブロックをくみあわせるといいですよ。
ジャンプ
ブロック定義(ていぎ)でつくる3つめのブロックは、ジャンプ
です。
- うわむき矢印(やじるし)キーでジャンプさせます。また、地面(じめん)にいるときだけジャンプできるようにします。
- 上下(じょうげ)のはやさ
y速度(そくど)
を一気(いっき)にたくさんふやして、上(うえ)へうごかします。
じつは、キャラクターは地面(じめん)にいるときに、地面(じめん)からすこしういた状態(じょうたい)になっています。そのため、このままだと、うわむき矢印(やじるし)キーをおしてもジャンプすることができません。
なぜ地面(じめん)にふれていないのかというと、さきほどつくった 地面(じめん)か天井(てんじょう)にあたる
で、地面(じめん)にふれたらはねかえるようにしているからです。
キャラクターが地面(じめん)にふれた状態(じょうたい)にするために、次(つぎ)のようにブロックを追加(ついか)してください。
yざひょうを -1 ずつかえる
で、キャラクターが地面(じめん)にふれます。そのときにうわむき矢印(やじるし)キーがおされるとジャンプします。うわむき矢印(やじるし)キーがおされなかった場合(ばあい)、yざひょうを -1 ずつかえる
と yざひょうを 1 ずつかえる
が連続(れんぞく)で実行(じっこう)されるので、キャラクターが1ずつ座標(ざひょう)をかえるようすはみえません。
なぜ地面(じめん)からすこしうかせておくのか?
上(うえ)のスクリプトでもわかるように、yざひょうを -1 ずつかえる
で地面(じめん)にふれたあと、yざひょうを 1 ずつかえる
をつかってふたたび地面(じめん)からはなれるようにしています。
なぜキャラクターを地面(じめん)からすこしうかせておくのかというと、今回(こんかい)はプラットフォームにたいする衝突判定(しょうとつはんてい)をすべておなじ色(いろ)でおこなうからです。地面(じめん)にふれた状態(じょうたい)にしてしまうと、おなじ色(いろ)である天井(てんじょう)や壁(かべ)にもふれていることになり、うまくうごかすことができません。
うごきをたしかめよう
では、定義(ていぎ)したブロックをつなげて、ここまでのうごきを確認(かくにん)してみましょう。うわむき矢印(やじるし)キーをおすとジャンプして、上(うえ)にあるプラットフォームにぶつかります。
ここまでは、上下(じょうげ)のうごきのスクリプトをつくりました。次(つぎ)のセクションからは、左右(さゆう)のうごきをつくっていきます。
Become a Pyxofy Member
最新記事をメールで受信 Pyxofy メンバー限定公開記事が読み放題
いつでも登録解除できます。スパムメールは送りません。
左右(さゆう)へうごかす
ブロック定義(ていぎ)でつくる4つめのブロックは、左右(さゆう)へうごかす
です。
左右(さゆう)の矢印(やじるし)キーをおしたとき、だんだんはやく横方向(よこほうこう)へうごくようにします。
キーをはなしたとき、すぐにとまるのではなく、だんだんゆっくりとまるようにしましょう。
壁(かべ)キック/壁(かべ)でとまる
ブロック定義(ていぎ)でつくる5つめのブロックは、壁(かべ)キック/壁(かべ)でとまる
です。
まずは、キャラクターが壁(かべ)をとおりぬけないようにようにします。壁(かべ)にあたったとき、左右(さゆう)のはやさ x速度(そくど)
に -1
をかけて逆方向(ぎゃくほうこう)へうごかします。
つづけて、壁(かべ)にあたったときに「壁(かべ)をキックしてのぼれるようにするのか」または「壁(かべ)でとまるようにするのか」、2つの場合(ばあい)で処理(しょり)をわけていきましょう。
最初(さいしょ)に、壁(かべ)キックです。うわむき矢印(やじるし)キーで壁(かべ)をのぼれるようにします。通常(つうじょう)のジャンプよりちいさくジャンプさせたいので、y速度(そくど)
の値(あたい)はちいさめにしてください。
壁(かべ)をキックするために、「右側(みぎがわ)の壁(かべ)にあたっているのか」または「左側(ひだりがわ)の壁(かべ)にあたっているのか」で処理(しょり)をわけます。
右側(みぎがわ)の壁(かべ)にあたるときは、みぎむき矢印(やじるし)キーがおされて x速度(そくど)
の値(あたい)がプラスになっているときです。x速度(そくど)
をマイナスにして、壁(かべ)からはなれるようにしましょう。
x速度(そくど)
の値(あたい)がプラスでないときは、ひだりむき矢印(やじるし)キーがおされているときです。x速度(そくど)
をプラスにして、左側(ひだりがわ)の壁(かべ)からはなれるようにします。
ここまでで壁(かべ)キックのスクリプトができました。キックして壁(かべ)からどれだけはなれるか、x速度(そくど)
の値(あたい)はおこのみです。ただ、キック力(りょく)がつよすぎると、重力(じゅうりょく)で下(した)へひっぱられて壁(かべ)をなかなかのぼれなくなるので注意(ちゅうい)してくださいね。
最後(さいご)に、壁(かべ)でとまる場合(ばあい)です。壁(かべ)にあたったときにうわむき矢印(やじるし)キーがおされていないときは、x速度(そくど)
を 0
にして壁(かべ)でとまるようにしましょう。
スクリプト完成(かんせい)
つくったブロックをすべてつなげて、キャラクターをうごかすスクリプトが完成(かんせい)です。
Scratch の Pyxofy ページへいって、実際(じっさい)にキャラクターをうごかしてみてくださいね。Scratch ジャンプ・壁キック by Pyxofy
「きょうからはじめるスクラッチプログラミング入門」Pyxofy (著)
Pyxofy が Scratch の基本をまとめた電子書籍を出版しました。
Kindle・Apple Books からご購入ください。
まとめ
ここまで、Scratch でキャラクターを操作(そうさ)する方法(ほうほう)について解説(かいせつ)してきました。
縦(たて)のうごきにも横(よこ)のうごきにも変数(へんすう)をつかったので、キャラクターはなめらかにうごきます。基本(きほん)のうごきであるジャンプや横(よこ)移動(いどう)だけでなく、壁(かべ)をキックしてのぼれるようにしました。このスクリプトを応用(おうよう)して、いろいろなゲームをつくってみてくださいね。
最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!
SNS で Pyxofy とつながりましょう! LinkedIn・ Threads・Bluesky・ Mastodon・ X (Twitter) @pyxofy・ Facebook
Pyxofy 新規メンバー登録
最新記事をメールで受信 Pyxofy メンバー限定公開コンテンツにアクセス
いつでも登録解除できます。スパムメールは送りません。