사용자 도구

사이트 도구


language:unity:2-raycast

2D 좌표 >> 3D 좌표

  • 마우스로 클릭한 곳의 3D 좌표를 구할때,
  • RaycastHitRay를 사용해서, 마우스 기준 위치를 얻는다.
  • 내가 쓰려고 하는, 특정 오브젝트에 닿았는지 확인한다.
public Camera subCamera; // 기준이 되는 카메라는, 외부에서 변수 등록할 수 있게 설정
public GameObject targetObject; // 마우스 클릭에 반응할 오브젝트
void Update() {
RaycastHit _hitRet = new RaycastHit(); // 결과를 저장할 RaycastHit
Ray _cameraRay = subCamera.ScreenPointToRay( Input.mousePosition ); // subCamera시점에서 마우스 위치를 ...
// targetObject가 마우스 클릭 지점에 있는지, 클릭한 지점의 위치는 어디인지 얻는다.
if( targetObject.collider.Raycast( _cameraRay, out _hitRet, 40f ) ) {
	// 3D 좌표를 저장
  target.position = _hitRet.point;
  // 어디를 가리키는지 선을 그어본다.
  Debug.DrawLine( _cameraRay.origin, _hitRet.point );
  // 리액션
	if( Input.GetButtonUp("Fire1") ) { /* 마우스 클릭시 뭔가 한다.*/ }
}
}

Physics에도 Raycast가 있고, 2D좌표를 3D 좌표로 변경이 가능한데, 아직 윗부분 아랫부분 차이를 잘 모르겠다.

RaycastHit _hitRet = new RaycastHit();
Ray _cameraRay = subCamera.ScreenPointToRay( Input.mousePosition );
// 어떤 물체든 화면상에 오브젝트가 있는 곳이라면,
if( Physics.Raycast(_cameraRay.origin, _cameraRay.direction, out _hitRet, 40) ) 
{
	Debug.DrawLine( _cameraRay.origin, _hitRet.point );
	target.position = hit.point;
}
language/unity/2-raycast.txt · 마지막으로 수정됨: 2024/04/23 22:44 저자 127.0.0.1