마우스로 캐릭터 방향 바꾸기
스크립트 작성
Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition);
Plane GroupPlane = new Plane(Vector3.up, Vector3.zero);
float rayLength;
if(GroupPlane.Raycast(camearRay, out rayLength))
{
Vector3 pointTolook = camerRay.GetPoint(rayLength);
transform.LookAt(new Vector3(pointTolook.x, transform.position.y, pointTolook.z));
}
코드분석
Ray cameraRay = Camera.main.ScreenPointToRay(Input.mousePosition); : 마우스의 위치를 ScreenPointToRay를 이용해 카메라로 부터의 스크린의 점을 통해 레이를 반환한다.
Plane GroupPlane = new Plane(Vector3.up, Vector.zero); : 월드 좌표로 하늘방향에 크기가 1인 단위 백터와 원점을 갖는다.
if(GroupPlane.Raycast(cameraRay, out rayLength) ; : 레이가 평면과 교차했는지 여부를 체크한다.
Vector3 pointTolook = camerRay.GetPoint(rayLenghth); : rayLenghth거리에 위치값을 반환한다.
transform.LookAt ~~: 위에서 구한 pointTolook 위치값을 캐릭터가 바라 보도록 한다.
Plane GroupPlane = new Plane(Vector3.up, Vector.zero); 그냥 쓸수 없고 이렇게 하는 이유는??
유니티에서 Plane을 만드는 생성자는 3가지로 오버로딩 되어있다.(= 평면을 만들 수 있는 조건)
평면을 결정하는 최소 조건!
- 한 직선 위에 있지 않은 세 점
- 한 직선과 그 직선 위에 있지 않은 한 점
- 한 점에서 만나는 두 직선
- 서로 평행한 두 직선
첫 번째 사용
학습참고 평면조건 https://docs.unity3d.com/ScriptReference/Plane-ctor.html
'유니티 > 기능구현' 카테고리의 다른 글
유니티) 미니맵 만들기 RenderTexture (0) | 2019.02.25 |
---|---|
유니티) 오브젝트 레이캐스트 검출하기 (Physics.Raycast) (0) | 2019.02.21 |
유니티) 2D Light 라이트 효과 (0) | 2019.01.03 |
유니티) Fade(In,Out) 효과넣기(알파값 조절) (0) | 2019.01.02 |
유니티) 데미지값 출력하기 FloatingText (Camera.WorldToScreenPoint) (0) | 2018.12.31 |