Unity敵に追いかけられてみる(4

こんにちは、適当に生きている私です。

さてさて、今回は敵をやっつける処理なので、追いかけられるのはもうおしまいだ!なんてね。
とはいえ、前回に引き続く感じではあるので、通番はそのままにしました。
前回のを読み返すとですね、「えーっと」がおおい!うっぜぇ(我ながら
ということで、今回の目標は「えー」とか「えーっと」を多用しないことにします。(個人的目標の設定)

それでは、始めてまいりましょう。
現状、プログラムを動かすと、棒人間にピンクアザラシが群がるムツゴロウさんみたいな感じになってしまします。
(・・・ムツゴロウさんを知らない、、だと?

毎度あんまり考えていないのですが、
・・・どうしよっかなぁ、
まずは、あれだな、棒人間に接触したあざらしは消滅するようにしよう。
おー接触処理だぁ、できるのかな
ぐぐってきまーすw

えーっと?(←あああああ・・・
接触判定を行う為には
Rigidbody2Dと、BoxColleder2Dが必要だそうで、つけていきましょう。
むむむ。。こりゃなんじゃ、、

大量のコライダーと思しきもろもろ

Collider読み方わからなくて調べたら物理学では「粒子加速器」のことなんですと。かっこい~(脱線
はい、えっとね、接触判定するにあたって、当たった位置を判定するためにあたりの範囲を指定するんですけど、これ、BoxColleder2Dを使うと正方形のエリアを設定することになるので、うーーーん個人的に嫌なので、別なのを使います。
ぐぐるぐるぐるぐぐるぐる・・・
ほうほう、私が求めているのはPolygonのやつっぽいですね、これにします
解説?

ここを読むのです。(公式へ丸投げ
公式さんありがとう!!!
あれ、2個足りんな、、まいっか。
ってことで、ポリゴンコリジョン2D!いけー!
茶番はじまり

ああああああ!

設定楽しくて説明なしでここまでやっちゃった!ww
・・・棒人間でやるかw

・・・・ふぁ?

何もしてないのにこうなってました(なんかやった人が言うやつ。。
ふぁーんどうしよう。
※茶番おわり

・・・しゃぁない、やり直しじゃ!
あ、そうそう、コンポーネント消したいときは、コンポーネント名横の点三つをポチっとして、

コンポーネントを削除をくりーーっく!

コンポーネント削除をクリックすると削除されます。
大事なものは消さないように注意な。
(直前操作ならCtrl+Zでもどる。今度は本当。
さて、もう一回やるべ。

この画面で楽しくなっちゃったw(反省

まぁ、ぱっと見わかりますね(わからない
これはあれです(わかるわけない
さて、説明か。
これはですね、緑色の五角形を接触判定する範囲として使いますよ!と、なっています。現在ね。
でもこのままだと困りますね、接触と言いながら、あざらしの体の大半は五角形の外にいるんですから。

編集しましょう

てんてんっててー♪

コライダーの編集ってところのよくわからない図が書いてあるボタンを押しましょう。ぽちっとな。
はい、なんもおきません。
いや、起きてるんですよ。
五角形にカーソルを置くと、、、、、

・・・呼んだ?

はい、五角形の角に四角ぽっちが出てきますよ。
(カーソルが!プリントスクリーンできない!
さあ、ドラッグするのだ!

にょいにょいーん

ふふふ、こういうの好きw
要はこうやってあざらしさん(接触判定範囲)を設定してねということですわ。
え?5角じゃ足りないと?
ふふふ、
ここを

新たに発生四角ぽっち!

こうだ!!

ほほほほほ

(煩わしいな、己のテンション)
と、こんな風に角が追加できるので、自由な形で接触判定の範囲を設定することができます。
ということで、

こんな感じですわ

はい、完成!
雑じゃないかって?接触判定のシビアなやつじゃないからざっくりでいいんですわよ。
じゃぁ次、
棒人間!

なんでだよおおおお!(重症

なんもしてないのに(略
あーどうしよっかなぁ、
そう、これね、ずれているだけじゃなくて、
処理の中で、Fill.xで左向き右向きにするってのをやってるんですが、
fill.xをtrueにしますと、、

ついてこない、、、、、だと。。

ちょっといろいろ修正しないといけないなぁ、、面倒だなぁ
ぐぐる、わ、、た、、、
おぉ、原因がわからんw。
まま、よくあることなので気にせず行きますわ。
まぁ、いったん全削除して、ざっくり範囲指定しなおしましょう。。
ぐぐりなおす。
全削除、、、全削除、、?

結論:何の成果も・・・得られませんでした!(´;ω;`)

いや、あるあるですねーw
私の検索能力が足りませんで、、、
ということで力技(頑張って消して、頑張って設定しなおす)
をしました。
(またスクショ忘れた(´;ω;`)ウゥゥ
力技でやり切ったので、やり直す気力はありません_(:3」∠)_

ヒントだけ残しておく。。
コライダーね。全部つながった一つの要素にする気ならPolygonCollider2Dの中のポイント⇒パス⇒サイズを1にしてから設定すると早くできそうだよ。
あと、コライダーのポイントの削除はCtrlキーを押しながらクリックする。
だけど、ポイントが緑になっていて、ポイントにつながった線が赤色になっていないと消えないので注意な。

完成図しかない(´;ω;`)ウゥゥ

ちなみに、、、

反転!

左右反転すると、こんな感じで、、、まぁ、許容範囲かなぁということで、これでいいことにします。
(ほぼ左右対称でよかった。)

これで、棒人間、あざらし両方に当たり判定の設定ができたので、
えーっと次は?コードを書くでいいか?
で、ですね、接触したときの判定を記述する方法ですが、消すのはあざらしだから、あざらし側のスクリプトに書けばいいと思うでしょ
でしょ?
やめた方がいいです。
理由は、あざらしは大量に出てきます。
あざらし同士の接触も発生します。
ということはその接触すべてに対して処理が発生するので、
重くなります
棒人間が接触するのは(いまのところ)あざらしだけなので、
棒人間側で処理を書くと、
「ぶつかってきたものすべてを消す」(強いなw)
なので、こちらの方がいろいろ楽です。
ということで書いてみましょう。
棒人間のスクリプト「ugokasu.cs」
こちらを修正していきますね。
接触判定処理は専用のメソッド(処理)が動くのでそちらを書いていきましょう。

    private void OnCollisionEnter2D(Collision2D collision)
    {
        
    }

こいつです。
Start()や、Update()の中ではなく、それらと同じ並びに入れてください
Class直下ですね。
ちょっとだけ説明すると
これは当たり判定のあるもの同士が接触した場合に実行されます。
(Collision2D collision)
こちらの中には接触した相手の情報が入っています。
今回、棒人間に接触したあざらしは無条件にやっつけるので、
削除処理を記述しましょう
えいやっと。

    private void OnCollisionEnter2D(Collision2D collision)
    {
        Destroy(collision.gameObject);
    }

消す=デストロイですって。強いわw
よし、これでいけるかな、実行してみましょう。。

・・・だめでしたw

あ、これか。Rigidbody2Dの設定忘れだ。。
えーっと、azarasiにRigidbody2Dを設定します。

こんな感じ。

今回、重力があるとあざらしが下に落ちていくので、重力は0にしました。
(棒人間に向かいながらも落ちていくあざらし、おもしろかったwww)
重力がないので、質量変更してもあんまりかなぁ、と思いつつ最小をセットしています。
あ、あとですね、プレハブ化して作ったやつ。

Resourceのなかみ

こいつも上書きしてください。
方法は、ヒエラルキー内のazarasiをドラッグアンドドロップでプロジェクト内のazarasiへ移動してあげると上書きされますので、これ、忘れないように。
(忘れたのはわたしです。)
で、これでいけるかな?よいしょー!

きゃわわわ

いいですねぇ、棒人間にたどり着いたとたん消滅するあざらし。。
あ、うれしい誤算(?)ですが、
Rigidbody2Dを設定するとそれぞれが重ならなくなるようです。
おかげで画面内、ぎちぎちにあざらしが群がっているように見えますね。

ふぅ、今回はいじょうかな?
最初に設定した個人目標(「えー」の数)は、、3個か。。まあまあだな。

とはいえ、これで説明終了ですね、
うーん、次どうすっぺ?(無計画の極み
ちょっと考えておきますね。
ではでは。

この記事が気に入ったらサポートをしてみませんか?