일반적으로 fps처럼 대상을 과녘하자마자 바로 피가 나오는 현상이나, , 목표지점을 클릭하면 해당지점으로 이동하는 것은 raycast로 가능하다
말 그래돌 광선을 쏘는 것이다.
광선을 쏴야하니 맞은 쪽은 collision을 가지고 있어야한다.
raycast 예제
void OnMouseClicked(Define.MouseEvent ent)
{
if (ent != Define.MouseEvent.Click) return;
//Returns a ray going from camera through a screen point.
//
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
int mask = (1 << 8) | (1 << 9) ; //
RaycastHit hit;
//public static bool Raycast
//(Vector3 origin, Vector3 direction, float maxDistance= Mathf.Infinity, int layerMask= DefaultRaycastLayers, QueryTriggerInteraction queryTriggerInteraction= QueryTriggerInteraction.UseGlobal);
if (Physics.Raycast(ray, out hit, 100.0f, mask))
{
_moveToDest = true;
_destPos = hit.point;
//Debug.Log($"Raycast Camera @ {hit.collider.gameObject.name}");
}
}
- Physics.Raycast(ray, out hit, 100.0f, mask에서 ray, hit (레이케스트를 맞은 대상), mask는 layerMask이다