이번에는 마우스로 클릭한 위치로 캐릭터를 움직이는 부분을 구현해보겠음.
일단 기본적으로 우리가 보는 모니터는 2D임. 그래서 마우스 입력은 2차원적이다.
마우스 클릭하는 순간 x,y의 2차원 좌표에서 우리가 보는 카메라를 통하여 직선적인 광선을 쏜다.
광선이 충돌하는 지점의 x,y,z의 3차원 좌표를 얻어 움직이게 하면 되겠음
소스코드는 다음과 같음
16번째 라인부터 보면 마우스 입력을 받았음
17번째 라인은 우리가 광선을 쏘면 충돌이 일어난 객체가 있을텐데 그 정보를 저장하는 변수가 되겠음
18번째 Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hit, Mathf.Infinity) 부분은
광선을 발사하는 부분이 되겠다. 메인카메라로 부터 레이저를 쏘는데 그 위치가 마우스 클릭한 부분, out hit은
충돌이 일어나면 hit에다가 저장하고, 3번째 매개변수는 레이저 길이가 되겠음 Mathf.Infinity는 무한대가 되겠다.
나머지 조건문 안에서 이제 움직일 좌표값을 얻었으니 isMove를 true로 바꾸에 움직이게 하면 되겠다.
lookUpdate에서 조건문을 통하여 우리가 좌표로 찍은 부분과 현재 움직이는 객체 사이의 거리가 0.1f보다 작으면 멈추도록 하였다.
밑에 있는 부분은 지난 챕터에 있던 캐릭터 움직이는 부분이다.
자동으로 호출하여 isMove가 true일때만 움직이도록 한 부분이다.
다음챕터에 소스코드는 공유하도록 하겠음
'Code Archive > Unity3D' 카테고리의 다른 글
| step6. 물리엔진 및 Trail을 이용하여 총쏘기 (0) | 2015.03.06 |
|---|---|
| step4. 객체 움직이기 및 회전 (0) | 2015.01.06 |
| step2. 소스코드에서 MonoBehaviour 생명주기 (0) | 2015.01.05 |
| step3.간단하게 캐릭터 움직이기 (0) | 2015.01.05 |
| step1. 유니티 화면 설명 (0) | 2015.01.05 |