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; }