게임에서 캐릭터를 조작하는 방법은 크게 2가지 방법으로 볼 수 있습니다. 한 가지는 키보드를 사용하는 방법이고 다른 한 가지는 마우스로 맵을 클릭해서 캐릭터를 이동시키는 방법입니다. 이번 예시에서는 마우스를 클릭해서 이동하는 방법을 2D 공간에서 사용합니다. 이 방법은 유명한 게임 중 스타크래프트, 리그오브레전드와 같은 게임을 예로 들 수 있겠습니다. 스킬이나 단축키를 사용할 때는 물론 키보드를 사용하지만 메인 캐릭터 이동은 마우스로 조작합니다. 방식은 단순합니다. 마우스 클릭 입력 값을 받고, 그때 이동시킬 타깃 위치를 설정해 줍니다. 타깃이 정해지면 움직이고 싶은 캐릭터를 그 타깃으로 서서히 움직이게 하면 됩니다. 서서히 움직이게 하는 함수는 Vector3.Lerp를 사용하면 되고 매개변수로 움직일 오브젝트의 위치, 타깃 오브젝트의 위치, 움직일 비율 이렇게 3가지를 넣어주면 됩니다. 이 이동 함수는 이동시킬 타이밍에 맞춰서 Update나 for 문, while 문, 등 반복문에 넣어주면 됩니다.
C# (UNITY 3D)
왼쪽 마우스를 눌렀다가 땠을 때(GetMouseButtonUp) 타깃이 지정되고 타깃을 따라서 2D 오브젝트가 이동하는 예시입니다. 클릭했을 때의 좌표를 표시합니다.
using UnityEngine.UI;
클릭했을 때의 마우스 표시용 Text를 사용하기 위해 UnityEngine.UI 사용합니다.
각 오브젝트를 스크립트에 할당합니다.
public RectTransform transform_icon;
public RectTransform transform_target;
public Text text_mouse;
private void Update()
{
Get_MouseInput();
Update_Moving();
}
//CodeFinder 코드파인더
//From https://codefinder.janndk.com/
private void Get_MouseInput()
{
if(Input.GetMouseButtonUp(0))
{
Vector2 mousePos = Input.mousePosition;
transform_target.position = mousePos;
string message = mousePos.ToString();
text_mouse.text = message;
Debug.Log(message);
}
}
private void Update_Moving()
{
transform_icon.position = Vector3.Lerp(transform_icon.position, transform_target.position, 0.02f);
}
변수(variable)
transform_icon : 클릭 시 타깃 방향으로 이동시킬 2D 오브젝트
transform_target : 클릭 시 클릭한 위치로 바로 이동하며 transform_icon은 이 오브젝트를 따라다님
text_mouse : 클릭했을 때의 mouse의 좌표 반환
함수(function)
Get_MouseInput : 왼쪽 마우스를 눌렀다가 땠을 때 감지, 그때의 마우스 좌표 표시, 타깃 위치 재조정
Update_Moving : 2D 이미지 타깃 방향으로 이동
AOS, 원하는 위치로 이동, 마우스 조작
'Unity3D > C#' 카테고리의 다른 글
Unity 클릭으로 오브젝트 생성, 파괴 (Instantiate/Destroy) (0) | 2020.11.07 |
---|---|
유니티 2D LookRotation으로 클릭한 방향을 쳐다보게 하기 (4) | 2020.11.05 |
Unity Mouse Cursor를 천천히따라다니는 2D 오브젝트 (0) | 2020.11.04 |
유니티 마우스 커서, 이미지 마우스 따라다니게 하기 (Mouse Position) (4) | 2020.11.02 |
유니티 마우스 왼쪽/오른쪽/가운데(휠) 버튼 클릭 값 받기 (0) | 2020.11.01 |