Unity3d Raycast 레이캐스트
- 참고링크 : https://ssabi.tistory.com/29
- 시작점(Origin)과 방향(Direction)으로 최대거리(maxDistance)만큼 레이를 쏘는 함수
- Physics.Raycast(transform.position, transform.forward, out hit, maxDistance)
private RaycastHit hit;
void Update ()
{
if (Physics.Raycast(transform.position, transform.forward, out hit))
{
Debug.Log("hit point : " + hit.point + ", distance : " + hit.distance + ", name : " + hit.collider.name);
Debug.DrawRay(transform.position, transform.forward * hit.distance, Color.red);
}
else
{
Debug.DrawRay(transform.position, transform.forward * 1000f, Color.red);
}
}
LineRenderer 라인렌더러
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RayController : MonoBehaviour
{
public LineRenderer lineRenderer;
// Start is called before the first frame update
void Start()
{
lineRenderer = gameObject.AddComponent<LineRenderer>();
lineRenderer.startWidth = 0.1f;
lineRenderer.endWidth = 0.1f;
lineRenderer.positionCount = 2;
lineRenderer.startColor = Color.red;
lineRenderer.endColor = Color.red;
lineRenderer.SetPosition(0, transform.position);
lineRenderer.SetPosition(1, transform.position + transform.forward * 10);
}
}
using UnityEngine;
public class RaycastExample : MonoBehaviour
{
void Update()
{
// 마우스 클릭을 체크합니다.
if (Input.GetMouseButtonDown(0))
{
// 카메라에서 클릭 위치로 Ray를 쏩니다.
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
// 레이캐스트를 실행하여 Collider와 충돌했는지 확인합니다.
if (Physics.Raycast(ray, out hit))
{
// 히트한 위치를 얻습니다.
Vector3 hitPoint = hit.point;
Debug.Log("Ray hit point: " + hitPoint);
// 필요한 다른 로직을 이곳에 추가하세요.
}
}
}
}