LoginSignup
1
1

More than 1 year has passed since last update.

Unity チュートリアル#3 プレファブと当たり判定

Last updated at Posted at 2022-05-10

#3 プレファブと当たり判定

前回はコンポーネントの追加とスクリプトを記述し、Playerを動かせるようにしました。
今回はさらに、プレファブという概念を用いて、コインをコース上に複数配置し、コインを集められるようにしたいと思います。

目次

プレファブ

プレファブとは、簡単にいうとオブジェクトのコピーを作成する仕組みのことです。
コースを作成する際に、Cubeをヒエラルキーから1つずつ追加しましたね。
あの方法だと、何も機能を持たないまま生成されてしまうので、同じ機能を複数持たせたい場合など、全てのオブジェクトにアタッチするのは少し面倒です。

そこで、1つのオブジェクトに複数の機能を持たせた状態でプレファブ化することによって、同じ機能を持ったコピーをいくつも作成することが可能になるのです。とても便利ですね。

では早速コインを1つ作り、プレファブ化して見ましょう。
今回は簡易的に、3D ObjectのCylinderに黄色のマテリアルをつけたものをコインにします。
大きさと角度を調節して、コインぽくしましょう。

スクリーンショット 2022-05-08 15.12.07.png

さらに、スクリプトを加えて、回転するようにします。スクリプト名はCoinMoveにし、下記のコードを書き込んでみましょう。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CoinMove : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        transform.Rotate(new Vector3(0,0,1));
    }
}

上記のコードでは、Z軸が縦になっているときに、Z方向に回転を加えることで、コインが横回転しているように見えます。縦軸が異なる場合は縦軸に合わせて、Rotateの数値を変更しましょう。打ち込めたら、Cylinderにスクリプトをアタッチしましょう。

これで最初のCylinderに、マテリアルとスクリプトの機能を持たせたオブジェクトが完成しました。
それでは、このオブジェクトをプレファブ化したいと思います。
方法は簡単です、ヒエラルキーのCylinderをプロジェクトにドラックするだけです。
プロジェクトに追加されたCylinderプレファブのインスペクターを見てみると、先ほど追加したマテリアルと、スクリプトが追加されているのが確認できます。

スクリーンショット 2022-05-09 15.16.36.png

スクリプトによる当たり判定

それでは、先ほど作成したコインをPlayerが触れたら、ゲット(消える)ようにしたいと思います。

それでは、前回作成したPlayerMove.csを開いて、下記のコードを追加して見ましょう。

void Update()
{
	
}
//ここから追加
private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.tag == "coin")
    {
        Destroy(collision.gameObject);
    }
}

  • OnCollisionEnter(Collision collision)
    Colliderコンポーネントを持つオブジェクト通しが触れた時に作動する(collisionには触れた相手の情報が入っている)
  • if (collision.gameObject.tag == "coin")
    もし、触れた相手(collision)のオブジェクトのTagが**"coin"**だったら
  • Destroy(collision.gameObject);
    当たった相手のオブジェクトを削除する

コードを打ち込んだら、次にCylinderプレファブのインスペクターからTagの設定を行います。
**Tag > Add Tag...**をクリックします。
スクリーンショット 2022-05-09 15.28.47.png

+マークをクリックし、New Tag Nameにcoinと入力し、Saveボタンを押します。
スクリーンショット 2022-05-09 15.33.00.png

そして、再度CylinderプレファブのインスペクターからTagを開くと、coinが追加されているので、クリックしてダグを設定します。
スクリーンショット 2022-05-09 15.46.23.png

これで、Playerがcoinタグを持ったオブジェクトに触れる事で、coinタグを持ったオブジェクトを消す事ができます。それでは、先ほど作成したCylinderプレファブをシーン画面にドラックして、コース上の好きな位置に配置してみましょう。
スクリーンショット 2022-05-09 16.08.21.png

これで、毎回マテリアルやスクリプトを追加する手間が省けました。ちなみにスクリプト内からでもプレファブ化したオブジェクトをシーンに追加することも可能です。

次のステップはこちら、#4UI

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1