Unityのオブジェクトタッチにテキストを表示する
この Unity チュートリアルへようこそ。ここでは、ゲーム内のオブジェクトに触れたときにテキストを表示する方法を学びます。この単純なインタラクションにより、プロジェクトに没入型の要素を追加できます。このチュートリアルはモバイルとデスクトップの両方で動作します。
ステップ 1: Unity プロジェクトを作成する
まだ行っていない場合は、Unity を開いて、新しい 3D プロジェクト を作成することから始めます。希望する開発環境に必要なアセットがインストールされていることを確認してください。
ステップ 2: 3D オブジェクトをインポートする
プレイヤーが操作するアイテムを表す 3D オブジェクト をシーンにインポートします。これは、立方体、球、またはゲームに適したその他のオブジェクトにすることができます。
ステップ 3: コライダーを追加する
コライダー コンポーネントを 3D オブジェクトにアタッチします。これにより、他のオブジェクトがいつ相互作用するかを検出できるようになります。一般的なコライダー タイプには、オブジェクトの形状に応じて、ボックス コライダー、球コライダー、メッシュ コライダーなどがあります。
ステップ 4: キャンバスとテキストを作成する
シーン階層内で右クリックし、[UI]、[キャンバス]の順に選択して、UI Canvas を作成します。キャンバス内に、メッセージを表示する Text コンポーネントを追加します。
ステップ 5: キャンバスをワールド空間に設定する
Canvas コンポーネントのレンダリング モードを 'World Space' に変更します。これにより、キャンバスがゲームの 3D 空間に存在できるようになります。
ステップ 6: キャンバスを配置する
3D オブジェクトに合わせてキャンバスの位置を調整します。これにより、トリガーされたときにテキストがオブジェクトの近くに表示されます。
ステップ 7: スクリプトを作成する
プレーヤーがオブジェクトと対話したときを検出する script を作成します。インタラクションが発生したら、Canvas をアクティブ化し、Text コンポーネントのコンテンツを設定します。以下のサンプル スクリプトを確認してください。
'ObjectInteraction.cs'
using UnityEngine;
using UnityEngine.UI;
public class ObjectInteraction : MonoBehaviour
{
public GameObject canvas;
public Text displayText;
private void Start()
{
canvas.SetActive(false);
}
private void Update()
{
// Use inline conditional to determine input position based on platform
Vector3 inputPosition = (Input.touchCount > 0) ? Input.GetTouch(0).position : (Vector3)Input.mousePosition;
// Raycast to determine if the touch or click hits the object
Ray ray = Camera.main.ScreenPointToRay(inputPosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit) && hit.collider.gameObject == gameObject)
{
// Activate the canvas and set the text
canvas.SetActive(true);
displayText.text = "Your message here!";
}
}
}
ステップ 8: オブジェクトにスクリプトを追加する
3D オブジェクトに C# スクリプトをアタッチします。これにより、対話ロジックが処理され、必要な変数がすべて割り当てられます。
ステップ 9: ゲームをテストする
ゲームを 実行し、インタラクションをテストします。指定したオブジェクトをクリックまたはタッチすると、テキストが表示されます。