Chapter 13-4. 미니 RPG : 마우스 커서
카테고리: Unity Lesson 2
태그: Unity Game Engine
인프런에 있는 Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part3: 유니티 엔진 강의를 듣고 정리한 필기입니다. 😀
🌜 강의 들으러 가기 Click
Chapter 13. 미니 RPG 만들기
🚀 마우스 커서
마우스 커서 에셋도 에셋스토어에 많다!
- 경우에 따라 커서의 모습을 2 가지로 할 것이다.
- 일반적일 떄의 마우스 커서 모습 👉 손 모양 커서
- 보스에 커서를 가져다댔을 때의 커서 모습 👉 칼 모양 커서
✈ 커서 이미지
커서로 사용할 이미지의 타입을 Cursor
로 설정해준다.
✈ 커서 적용하기
Project Settings - Player - Default Cursor 에서 디폴트 커서 이미지를 적용시킬 수 있다. 위와 같이 손쉽게 커서를 바꾸는 방법도 있지만 경우에 따라 커서의 모습을 다르게 할 것이기 때문에 코드에서 설정해줄 것이다.
📜PlayerController
public class PlayerController : MonoBehaviour
{
Texture2D _attackIcon;
Texture2D _handIcon;
enum CursorType
{
None,
Attack,
Hand,
}
CursorType _cursorType = CursorType.None;
void Start()
{
_attackIcon = Managers.Resource.Load<Texture2D>("Textures/Cursor/Attack");
_handIcon = Managers.Resource.Load<Texture2D>("Textures/Cursor/Hand");
}
void Update()
{
UpdateMouseCursor();
// ...
}
void UpdateMouseCursor()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100.0f, _mask))
{
if (hit.collider.gameObject.layer == (int)Define.Layer.Monster)
{
if (_cursorType != CursorType.Attack)
{
Cursor.SetCursor(_attackIcon, new Vector2(_attackIcon.width / 5, 0), CursorMode.Auto);
_cursorType = CursorType.Attack;
}
}
else
{
if (_cursorType != CursorType.Hand)
{
Cursor.SetCursor(_handIcon, new Vector2(_handIcon.width / 3, 0), CursorMode.Auto);
_cursorType = CursorType.Hand;
}
}
}
}
}
- Texture2D 👉 2D 텍스처. 이 타입으로 커서이미지 로드할 것.
_attackIcon
: 공격 때 커서 텍스처_handIcon
: 땅에 가져다 댔을 때 커서 텍스처
CursorType
커서 상태를 enum으로 관리- Start
_attackIcon
,_handIcon
에 커서 텍스처 로드
- UpdateMouseCursor
- 게임 화면에 클릭한 곳이 몬스터일 경우 👉
_attackIcon
커서로 세팅 - 게임 화면에 클릭한 곳이 몬스터가 아닐 경우 👉
_handIcon
커서로 세팅 - 커서가 너무 빈번히 계속해서 세팅되면 깜빡 깜빡 거린다.
- if (_cursorType != CursorType.Attack), if (_cursorType != CursorType.Hand) 과정을 해주면 진짜 변경되야 할 때만 세팅되므로 이런 현상이 사라진다.
- 위 조건 처리를 안해주면 매프레임마다 Cursor.SetCursor 가 실행되는거나 마찬가지이기 때문에 계속 세팅되서 커서가 계속 깜빡거리게 된다. ㅠㅠ
- 게임 화면에 클릭한 곳이 몬스터일 경우 👉
Cursor.SetCursor(커서이미지, 커서포인트 위치, 커서 모드
- 첫 번째 인수 👉 커서의 Texture2D 이미지
- 두 번째 인수 👉 마우스 커서 위치가 될 곳
- 마우스 이미지의 왼쪽 상단(빨간점) 부분이 좌표로 (0, 0)이 된다. 칼 끝과 손가락 끝을 커서의 위치 좌표 기준점으로 지정하는 것이 좋겠으니 (_attackIcon.width / 5, 0) 만큼, 즉 대충 너비의 1/5 정도 더 이동한 좌표를 커서의 기준점 좌표로 삼는다.
- 세 번재 인수 👉 커서의 모드
Cursor.Auto
: 하드웨어의 커서를 사용- 윈도우 커서에 이미지를 입혀 사용하게 된다.
Cursor.ForceSoftware
: 소프트웨어에서 커서를 그려서 사용
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기