Unity RayCastでキャラクターを検出する
■Topic
対象を検出したい
■方法
一般的に広く伝わるRayCastを使わせていただき、
「画像をクリックするとひとまずセリフがデバッグ表示される」
を目指す。
▼完成イメージ
①RayCastオブジェクトを作る
何はともあれRayCastオブジェクトがないといけないので、
Hierarchy上で
右クリック > Create Empty
でからのオブジェクトを作成。
名前をRayCastとする。
②Scriptを作る
最下部のリンクの内容を組み合わせたため、
コピペ率が高いが、動くものを目指していく。
ちなみにcaseの内容は検出するオブジェクト名と揃える必要があります。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class RayCastTest : MonoBehaviour
{
public Camera camera_object; //カメラを取得//rayキャストが当たったものを取得する入れ物
public RaycastHit hit;void Update()
{
if (Input.GetMouseButtonDown(0)) //マウスがクリックされたら
{
//マウスのポジションでrayを生成
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out hit))
//マウスのポジションからRayを投げて何かに当たったらhitに入れる
{
string objectName = hit.collider.gameObject.name; //オブジェクト名を取得して変数に入れるDebug.Log(objectName); //オブジェクト名をコンソールに表示
switch (objectName)
{
case "Chr_01":
Debug.Log("なによ"); //女の子セリフをコンソールに表示
break;
case "Chr_02":
Debug.Log("やあ"); //男の子セリフをコンソールに表示
break;
default:
Debug.Log("何もないようだ"); //オブジェクト名をコンソールに表示
break;
}
}
}
}
}
③カメラを入れて終わり
camera_object
にメインカメラを入れることができるので、
それを行ってゲームを実行すればセリフが再生されるはずです。
---
■参考にさせて頂いた記事
RayCastその4、Raycastを2Dで使う【Unity】 - (:3[kanのメモ帳]