スクラッチプログラミングに挑戦している皆さん、どうも!スクラッチコーチです。
前回に
引き続き、
敵モブを
作り込みます。
敵モブの
動きをグレードアップする
ここまでで
次のことが
実現されました。
• レベルによって
敵モブの
配置を
変えることができる
•
敵モブはプレイヤーが
近づくまでスポーンしない
• スポーン
後は、
画面内では
表示されて、
画面外に
行くと
非表示になる
•
一定の
速度で
移動する
方向転換する
引き続き
次の
仕様も実現していきます。
•
壁に
当たると
反転する
•
坂を
登ることができる
•
重力の
影響を
受ける
•
移動中はアニメーションする
ブロック
定義「
障害物に
触れているか
調べる」を
作る
変数「
障害物に
触れているかどうか」を
作る
ブロックかレベルに
触れたらTRUEにする
ブロック
定義「
方向転換する」を
作る
利用する
障害物に
触れているどうか
調べる
障害物に
触れている
場合を
作る
坂を
登る
傾斜を
指定する
とりあえず3
座標分の
傾斜なら
坂を
登るようにしていきます。
また
障害物に
触れているか
調べる
Y
座標を
高くして
もまだ
当たっているか
調べます。
壁に
当たったと
見なす
まだ
当たっているなら、それは
坂ではなく
壁であると
見なして、いったんY
座標を
戻します。
反転はんてんする
変数へんすう「
進行しんこう方向ほうこう」を-1なら1に、1なら-1に
逆転ぎゃくてんさせます。
動作どうさ確認かくにんする
壁かべに
当あたると
移動いどう方向ほうこうが
変かわるようになりました!
重力じゅうりょくの
影響えいきょうを
受うけるようにする
坂さかの
処理しょりを
確たしかめるには、
重力じゅうりょくの
影響えいきょうを
受うける
必要ひつようがあります。
坂さかを
下くだる
動うごきができないからです。
変数へんすう「スピードY」を
作つくる
初期しょき化かする
ブロック
定義ていぎ「Y
軸じくに
移動いどうする」を
作つくる
利用りようする
重力じゅうりょくを
適用てきようする
接触せっしょく判定はんてい用ようのループを
作つくる
プレイヤーで
もっとも作つくった、1
座標ざひょうずつY
座標ざひょうを
変かえて、
何なんかに
接触せっしょくしているかどうかを
判断はんだんする
処理しょりを
作つくります。
変数へんすう「
直前ちょくぜんのY
座標ざひょう」を
作つくる
Y
座標ざひょうを
記録きろくする
1
座標ざひょうずつズラす
スピードYは、ジャンプ
中ちゅうはプラスですが、
落下らっか中ちゅうはマイナス
方向ほうこうに
値あたいが
動うごきます。プラスかマイナスか、
条件じょうけん分岐ぶんきして
判断はんだんする
代かわりに、
絶対ぜったい値ちの
割り算わ ざんでプラスとマイナスを
判断はんだんします。
数字すうじで
もっとも解説かいせつしておきます。
スピードYが10なら、10 ÷ 10 = 1です。
スピードYが-10なら、-10 ÷ 10 = -1となります。
これで
条件じょうけん分岐ぶんきせずに、
上昇じょうしょう中ちゅうは1
座標ざひょうだけ
上うえを
調しらべられて、
下降かこう中ちゅうは1
座標ざひょうだけ
下したを
調しらべられます。
障害しょうがい物ぶつに
触ふれているか
調しらべる
触ふれていたら
減速げんそくする
Y
座標ざひょうを
元もっともとに
戻もっともどす
動作どうさ確認かくにんする
※このミニ
動画どうがは3
倍ばい速そくになっています
動画どうがの
最初さいしょにちょっと
高たかめのところにスポーンしたスライムが、
重力じゅうりょくの
影響えいきょうを
受うけて
着地ちゃくちしている
様さまが
確認かくにんできます。また、
坂さかを
下くだるように
もっとも動うごいています。
壁かべで
もっとも反転はんてんして、
画面がめん外がいに
行いくと
消きえること
もっとも見みて
取とれます。
バグを
直なおす
重力じゅうりょくによるバグを
確認かくにんする
一見いっけん上手うまくいったように
見みえますが、
実じつはバグがあります。
画面がめん外がいに
消きえたスライムが、
二に度どと
現あらわれなくなるのです。
なぜこのようなことが
起おきるか
説明せつめいします。
画面がめん外がいに
行いくことで「
隠かくす」ブロックによって
隠かくれるため、ブロック
定義ていぎ「
障害しょうがい物ぶつに
触ふれているか
調しらべる」の
結果けっかが
常つねに「いいえ」になってしまいます。そうするとブロック
定義ていぎ「Y
軸じくに
移動いどうする」では、ずっと
重力じゅうりょくの
影響えいきょうでY
座標ざひょうが-1され
続つづけて、
結果けっか的てきに、
隠かくれている
間あいだに
画面がめんの
一番いちばん下したまで
落おちてしまうのです。そしてプレイヤーが
近ちかづくと
表示ひょうじされ、
画面がめん下端かたんでフルフル
震ふるえているスライムが
見みつかるという
流ながれです。
表示ひょうじしているときだけ
重力じゅうりょくを
適用てきようする
最適さいてき解かいではないか
もっともしれません。しかし、
今いまできる最
もっともっともっともカンタンで
効果こうか的てきな
打ち手う てが、
表示ひょうじ中ちゅうのみブロック
定義ていぎ「Y
軸じくに
移動いどうする」を
適用てきようすることです。
また、ブロック
定義ていぎ「
方向ほうこう転換てんかんする」
もっとも表示ひょうじ中ちゅうのみ
適用てきようします。
理由りゆうは、
隠かくれている
間あいだはどのみち
障害しょうがい物ぶつに
触ふれたか
正ただしく
判断はんだんできないため、やって
もっとも仕方しかたないからです。
埋うずもっともれてしまうバグを
確認かくにんする
これでよし!と
思おもっともいきや、
今度こんどは
非ひ表示ひょうじ中ちゅうにシーンに
埋うずもっともれこんでしまうバグが
起おこります。
非ひ表示ひょうじ中ちゅうは
方向ほうこう転換てんかんしない(できない)ので、シーンに
段差だんさがあって
もっとも直進ちょくしんして
埋うずもっともれてしまいます。
隠かくれている
間あいだはそれで
もっともいいのですが、シーンに
埋うずもっともれている
間あいだに
表示ひょうじしてしまうと、シーンに
埋うずもっともれてフルフル
震ふるえ
始はじめます。
これは
目立めだつバグなので
対応たいおうしていきます。
ただ、けっこう
難解なんかいな
処理しょりになるので、いったん
飛とばして
区切くぎりの
良よいタイミングでタックルすることにします。
アニメーションする
次回じかいはアニメーションするところを
作り込つく こんでいきます!このあとすぐに
更新こうしんします。