개요
이번에 동일 팀으로 2차 팀플을 하게 되었다.
저번 팀플 때 TIL을 성실히 적지 않은 게 아쉬워져서 오늘 개발 들어가는 김에 적어보고자 한다.
나는 플레이어에 자원했다. UI는 저번에 충분히 해봤고, 작업 하면서 많이 배울 수 있는 파트를 하고 싶었다. 그리고 귀엽기도 하다
오늘 점심까지 기획하고 오후에 개발에 들어갔다.
작업 내용
오늘 개발은 플레이어 이동까지 했다.
모바일 게임이라 virtual joystick을 사용해야 했는데, 기간이 짧은만큼 무료 에셋을 사용해 빠르게 구현하기로 했다. UI가 일이 많기도 했다.
CharacterController와 무료 에셋을 사용해 구현했다.
해당 에셋을 사용한 이유는 1. 리뷰가 압도적으로 많았으며 2. 최근 리뷰가 4일 전이었고 3. 국내 유명 유투버가 만든 튜토리얼 영상까지 있었다.
우선 몬스터와 캐릭터가 겹치는 부분이 있어 CharacterBase라는 abstract class를 구현하고, 해당 class에 선언된 moveSpeed(이동값), gravity(중력값)을 받아 구현했다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : CharacterBase
{
// 외부 접근 가능 변수
[Header("플레이어 관련")]
public VariableJoystick joystick;
public Animator PlayerAnimator { get; private set; }
[SerializeField] private float rotationSpeed = 10f;
// 내부에서만 사용하는 변수
private CharacterController _characterController;
private Vector3 gravityVelocity;
private void Awake()
{
PlayerAnimator = GetComponent<Animator>();
_characterController = GetComponent<CharacterController>();
}
private void Update()
{
HandleMovement(); // 이동 처리
}
#region 동작 관련
private void HandleMovement()
{
float x = joystick.Horizontal;
float z = joystick.Vertical;
Vector3 moveDir = new Vector3(x, 0, z);
Vector3 move = moveDir.normalized * moveSpeed;
// 회전
if (moveDir.magnitude > 0.1f)
{
Quaternion toRotation = Quaternion.LookRotation(moveDir, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, toRotation, Time.deltaTime * 10f);
}
// 중력 처리
if (_characterController.isGrounded && gravityVelocity.y < 0)
{
gravityVelocity.y = -0.1f;
}
gravityVelocity.y += gravity * Time.deltaTime;
Vector3 finalMove = (move + gravityVelocity) * Time.deltaTime;
_characterController.Move(finalMove);
PlayerAnimator.SetFloat("Move", _characterController.velocity.magnitude);
}
#endregion
}
애니메이션 설정은 아래처럼 했다.
Play 하면 아래처럼 잘 움직인다.
TODO
- State 구조로 변경(PlayerState.Move, PlayerState.Idle...)
- 플레이어 캐릭터 망토, 칼, 방패 있었다없었다있었다없었다 처리
간단 회고
흠 첫 삽을 뜬 느낌이다! 저번 프로젝트보다 빡셀 것 같은 예감이 들지만 이번 프로젝트도 잘 마무리 할 수 있었으면 좋겠다.
'공부 > [TIL] Game Bootcamp' 카테고리의 다른 글
[TIL] #3. 플레이어 State 분리 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.18 |
---|---|
[TIL] #2. 에셋 캐릭터 애니메이션 편집 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.17 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : 리더보드 구현 (0) | 2025.03.06 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : 궤적, HpBar (0) | 2024.12.19 |
[멋쟁이사자처럼 부트캠프 TIL] 유니티 게임 개발 3기 : 스킬 + 액션툴 (0) | 2024.12.18 |