상세 컨텐츠

본문 제목

유니티 마우스로 게임화면 클릭한 위치를 카메라로부터 선 그리기

유니티/기능

by MJ_119 2024. 9. 18. 22:54

본문

 

아래 코드 적용하면 왼쪽 게임화면 클릭시 오른쪽에 클릭한 위치로 카메라부터 시작되는 선이 그려짐.

using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    Ray ray;

    void Update()
    {
        if(Input.GetMouseButtonDown(0))
        {
            ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        }
        Debug.DrawRay(ray.origin, ray.direction * 100);
    }
}

 

 

 

 

- 다른 방법

1. Physics.Raycast 사용하기

Ray를 직접 생성하는 대신, Unity의 Physics.Raycast를 사용하여 레이를 발사하고 그 결과를 처리할 수 있습니다.

 

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            Debug.Log("Hit: " + hit.collider.name);
            // 여기에 피격된 물체에 대한 추가 로직 작성 가능
        }
    }
}

 

2. Transform 방향으로 Ray 발사

카메라나 다른 오브젝트의 Transform 방향을 기준으로 레이를 발사하는 방법입니다.

 

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Vector3 direction = transform.forward; // 오브젝트가 향하는 방향
        Ray ray = new Ray(transform.position, direction);
        Debug.DrawRay(ray.origin, ray.direction * 100, Color.red);
    }
}

 

3. 레이 방향과 목적지를 직접 지정

만약 화면상의 특정 지점이나 특정 오브젝트를 향해 레이를 쏘고 싶다면, 직접 그 목적지를 지정할 수도 있습니다.

 

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        Vector3 destination = new Vector3(0, 0, 10); // 특정 위치
        Ray ray = new Ray(transform.position, destination - transform.position);
        Debug.DrawRay(ray.origin, ray.direction * 100, Color.blue);
    }
}

관련글 더보기