ハリネズミを敵にくっつける処理(ナシアサルト)

こんばんは

ナシアサルト(仮)を作ってますが今はだいたいこんな感じです。

youtu.be

先週からの変更点としては、

  1. 敵の種類を増やした。
  2. 効果音をつけた。
  3. 敵を捕まえたときのアニメーションを追加した。
  4. スコア加算

などを加えました。


前回からすでに実装されていましたが、
打ち出されたハリネズミが敵にくっつく処理がUnityならすげく簡単にできて感動したので書いておきたいと思います。

まず、ハリネズミと敵キャラにコライダーをアタッチします。
f:id:satotucircle:20191215204734p:plain

ハリネズミには"Bullet"という名のタグをつけます。
f:id:satotucircle:20191215204742p:plain

次に敵キャラのスクリプトに下記処理を入れます。

    private void OnTriggerEnter2D(Collider2D collision)
    {
        // ハリネズミ弾と当たった場合
        if (collision.gameObject.tag == "Bullet")
        {
            // pearとくっつけてハリネズミの重力を消す
            collision.gameObject.transform.SetParent(this.transform, true);
            // ハリネズミの物理演算処理を止める
            collision.gameObject.GetComponent<Rigidbody2D>().isKinematic = true;

            // 表示順をいじってる
            collision.gameObject.GetComponent<Canvas>().sortingLayerID = 2;
            canvas.sortingLayerID = 2;
        }
     }

これでいけるはず。
表示順をいじってるのは、くっついたハリネズミが他の敵キャラと重なったとき、ハリネズミだけがその敵キャラより前面に表示されて変になっちゃうからです。


SetParent()が便利で使いまくってますが、親子関係を持たせるとスケールとか表示位置などで融通きかなくてムキーってなります。

明日からは敵の攻撃とかゲームオーバーとか実装していきたいです。