P5.エアホッケー.05「ゴール、ゴール、ゴール、ゴール、、、ゴーーーーーーール!」
ゴールの横幅は10m(のはず)。だからパックが自陣又は敵陣の壁に当たった時、「-4 ≦ パックのx位置 ≦ 4」なら跳ね返すんじゃなくてゴールとすればいいよね。パックの半径考えるから、±5じゃなくて±4ね。(ま、どっちでもいいけど)
判定がクソ地味・・・
パックに付けたスクリプトの修正から。まずは自陣ゴールのチェック。下図参照。
としておいて、"GOALka" の中身を書く。下図参照。
❶ どこでもいいので、空いている場所にOn Event
"GOALka" を作成。
❷ こんなに長いのに、結局やってることは、「-4 ≦ パックのx位置 ≦ 4」のチェック。ほんと、ヴィジュアルスクリプトってクソだろ。なんとかしてくれ。
❸ 上記を満たしてたら、"packAru" を False にするんだけど、注意なのは、"packAru" は "Kami" オブジェクトが持っているってこと! ちゃんと選択するの、忘れないように。
❹ で、単に "packAru" を False にしただけじゃパックが画面に残っちゃってるので、Remove Object
で自身を消せばいいと考えるんだけど、実はこれは間違いなんだ。
テストプレイ
まー、見た感じはこれで行けるんだけどね。試しにここまでで、[▶ Play] してみてくれ。(パックがなかなか自ゴールにはいらねーって時は、パックの "myDir" を x: 15, y: -20 とかに変更で)
- ゲーム始まって、スペースキーでパックが出る。
- パックが出てる時はスペースキーを押してもパックは出ない。
- ゴールに入ったら、パックが消える。
- で、スペースキーを押せば、またパックが出る。
こんな風になるはずだ。(またメンドクサイのでGifは無し。)
一見、これで良さそうなんだけどね。ダメなんだ。なんでかっていうと、実はスポーンさせる時、シーンをスポーンさせているからだ。パックはシーンにあるオブジェクト。だから、オブジェクトだけを消しても、なんとシーン(シーンの元)が残ってしまっている状態なんだ。
ちゃんと元から消さないとね。
次回その辺を修正する。やっぱり頭痛が痛い。
本日のポイント
- 頭が痛い時は無理しない。
〇 次回、スポーンさせたシーンを消す方法。