Unity의 개체 터치에 텍스트 표시

게임에서 개체를 터치할 때 텍스트가 표시되도록 하는 방법을 배울 수 있는 Unity 튜토리얼에 오신 것을 환영합니다. 이 간단한 상호 작용을 통해 프로젝트에 몰입형 요소를 추가할 수 있습니다. 이 튜토리얼은 모바일과 데스크톱 모두에서 작동합니다.

1단계: Unity 프로젝트 만들기

아직 작성하지 않았다면 먼저 Unity을 열고 새 3D 프로젝트를 만듭니다. 선호하는 개발 환경에 필요한 자산이 설치되어 있는지 확인하세요.

2단계: 3D 개체 가져오기

플레이어가 상호 작용할 항목을 나타내는 3D 객체를 장면으로 가져옵니다. 이는 큐브, 구 또는 게임에 적합한 기타 개체일 수 있습니다.

3단계: 충돌기 추가

3D 개체에 충돌기 구성 요소를 연결합니다. 이를 통해 다른 개체가 상호 작용할 때를 감지할 수 있습니다. 일반적인 충돌체 유형에는 개체의 모양에 따라 Box Collider, Sphere Collider 또는 Mesh Collider가 있습니다.

4단계: 캔버스 및 텍스트 만들기

장면 계층 구조를 마우스 오른쪽 버튼으로 클릭하고 UI를 선택한 다음 캔버스를 선택하여 UI 캔버스를 만듭니다. 캔버스 안에 메시지를 표시할 텍스트 구성 요소를 추가합니다.

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단계: 개체에 스크립트 추가

상호 작용 논리를 처리하고 필요한 모든 변수를 할당하는 C# 스크립트를 3D 개체에 첨부하세요.

9단계: 게임 테스트

게임을 실행하고 상호 작용을 테스트하십시오. 지정된 개체를 클릭하거나 터치하면 텍스트가 나타나야 합니다.