こんにちは、カバゴトです!今回は、Unityでタグをつける方法と使い方について、超初心者向けに解説していこうと思います。
タグとは
タグはUnityエディタ内でゲームオブジェクトやコンポーネントにラベルを付けるための仕組みです。
簡単に言うと、Unityの物体に名前を付ける役割を持つものです。
例えば、聖剣、ポーションのようにUnityの物体に名前を付けます。そうすることで、効果や役割の設定が便利になります!
タグの使い方
では、タグの使い方について解説します。
オブジェクトを選択して、右上のタグをクリックします。すると、Untaggedとか、Respawnとかいろいろ出てくると思います。基本的には、一番下の「Add Tag」をクリックして、自分でタグの名前を決めましょう。
「Add Tag」をクリックすると上の画像のようになります。「+」をクリックすると、タグの名前が付けられます。
実際にタグを利用した具体例
タグの使い方について、理解してもらうために具体例を紹介します。
上の画像はタグを用いた簡単なシーンです。
赤いキューブが球体(Sphere)に触れると球体(Sphere)が消え、円柱(Cylinder)に触れると円柱(Cylinder)が移動し、カプセル(Capsule)に触れると、”Hello World”が表示されています。
スクリプトを見てみましょう。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class colorchange : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
Debug.Log("Hello World");//"Hello World"と表示する
}
}
}
↑上のスクリプトは”Hello World”と表示するものです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
transform.position = new Vector3(0,0,0);//指定した座標に移動させる
}
}
}
↑上のスクリプトは指定の座標に移動させるスクリプトです。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class vanish : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
// 例: アイテムを消す
Destroy(gameObject);
}
}
}
↑上のスクリプトはオブジェクトを消すスクリプトです。
タグを用いることで「cube」に当たったら~するというスクリプトを作ることができます。
(おまけ)具体例の詳しい作り方
具体的な作り方を解説します。
オブジェクトの準備
まずは、オブジェクトを準備しましょう。GameObject→3DObject→Cube Cylinder Capsuleで出せると思います。
もし、出し方が分からな人は下の記事を参考にしてみてください。
タグをつける
右側のタグを「cube」にします。タグの設定方法は記事の前半を見てください。
IsTriggerをつける
画面右下の「IsTrigger」を付けましょう。もし、「IsTrigger」を知らない方は、下の記事を参考にしてみてください。
Rigidbodyをつける
すべてのオブジェクトを選択して、それぞれに「Component」→「Physics」→「Rigidbody」をクリックして「RigidBody」を追加しましょう。
今回は落下運動は使わないので、「Use Gravity]のチェックを外しましょう。
当たり判定は、RigidBodyが必要となります。その理由としては、物理的な挙動(RigidBody)を与えないと当たったことが分からないからです。
スクリプトの作成
最後にスクリプトを作ります。
「Asset」→「Create」→「C#Script」でスクリプトを計4つ準備します。スクリプトについてあまり知らない方は下の記事を参考にしてみてください。
そして、名前をそれぞれ「control」、「check」、「move」、「vanish」にします。
そして、下のコードを書いてください。(保存を忘れずに!)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class colorchange : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
Debug.Log("Hello World");//"Hello World"と表示する
}
}
}
↑が「check」です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
transform.position = new Vector3(0,0,0);//指定した座標に移動させる
}
}
}
↑が「move」です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class vanish : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("cube"))//cubeがタグ
{
// 例: アイテムを消す
Destroy(gameObject);
}
}
}
↑が「vanish」です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class control : MonoBehaviour
{
float speed = 8.0f;
void Update()
{
// Wキー(前方移動)
if (Input.GetKey(KeyCode.W))
{
transform.position += speed * transform.forward * Time.deltaTime;
}
// Sキー(後方移動)
if (Input.GetKey(KeyCode.S))
{
transform.position -= speed * transform.forward * Time.deltaTime;
}
// Dキー(右移動)
if (Input.GetKey(KeyCode.D))
{
transform.position += speed * transform.right * Time.deltaTime;
}
// Aキー(左移動)
if (Input.GetKey(KeyCode.A))
{
transform.position -= speed * transform.right * Time.deltaTime;
}
}
}
↑が「control」です。
では、それぞれ、スクリプトをオブジェクトに入れていきます。
- 「cube」→「control」
- 「Sphere」→「vanish」
- 「Capsule」→「check」
- 「Cylinder」→「move」
のようにそれぞれスクリプトをドラッグ&ドロップしましょう。
これで完成です!
終わりに
ここまで長い記事を読んでくださりありがとうございます!今回は、Unityでタグを付ける方法と使い方について超初心者向けに解説しました。
もし、うまくいない場合や意見等あればコメントの方をよろしくお願いします!
この記事が参考になれば幸いです。また、次回のブログでお会いしましょう!
コメント