이러한 형태의 일반 상태, 조준상태가 달라지는 UI를 만들어 보려 한다
우선 게임 창에서 작게 검은색 상자 UI를 만들어 준다
이렇게 플레이어를 따라다니는듯한 느낌을 줄 수 있다
이제 여기에 플레이어가 조준을 하고 있는가에 따라서 각도 변화를 주기 위한 스크립트를 제작한다
public class PlayerUI : MonoBehaviour
{
private PlayerMovement playerMovement;
private RectTransform rectTransform;
void Start()
{
playerMovement = GameObject.FindWithTag("Player").GetComponent<PlayerMovement>();
rectTransform = gameObject.GetComponent<RectTransform>();
}
void Update()
{
Vector3 targetAngle = playerMovement.isAiming ? new Vector3(0f, 30f, 0f) : new Vector3(0f, 0f, 0f);
Vector3 currentAngle = rectTransform.rotation.eulerAngles;
Vector3 newAngle = Vector3.Lerp(currentAngle, targetAngle, Time.deltaTime * 5f);
rectTransform.rotation = Quaternion.Euler(newAngle);
}
}
플레이어가 조준을 하고 있는가를 나타내는 bool값을 받아온뒤, 이를 삼항 연산자를 통해서 목표를 정하고 있다
이때 Lerp를 사용하여 자연스러운 변화를 유도하고 있다
이렇게 잘 변화하고 있는것을 알 수 있다 다만, 현재 canvas에 원근감이 없어서 이를 적용시켜 주어야 한다
우리의 GPT선생님에게 물어본다
Canvas를 worldspace에서 다루라고 하는데, 잘 해보지 못한 영역이라서 공부를 해야 할 것 같다
해결법을 찾았다
GPT가 알려준 방법은 전부 아니였고, Canvas를 추가로 생성해서 해당 Canvas를 조절하는 방식으로 하면 된다
다만, 이렇게 할 시, Canvas가 플레이어를 따라다니지는 않기 때문에 직접 작성을 해주어야 한다
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class PlayerUI : MonoBehaviour
{
private PlayerMovement playerMovement;
private RectTransform rectTransform;
public TextMeshProUGUI bulletLeft;
void Start()
{
playerMovement = GameObject.FindWithTag("Player").GetComponent<PlayerMovement>();
rectTransform = gameObject.GetComponent<RectTransform>();
}
void Update()
{
Vector3 targetAngle = playerMovement.isAiming ? new Vector3(0f, 20f, 0f) : new Vector3(0f, 0f, 0f);
// 로컬 좌표계를 기준으로 회전
Vector3 currentLocalAngle = rectTransform.localEulerAngles;
Vector3 newLocalAngle = Vector3.Lerp(currentLocalAngle, targetAngle, Time.deltaTime * 10f);
rectTransform.localRotation = Quaternion.Euler(newLocalAngle);
}
}
플레이어의 하위에 있게 하면서, 회전을 시도할시, 로컬 좌표계를 기준으로 회전을 하게 한다
잘 회전되는 것을 볼 수 있다
'개발일지 > 게임개발' 카테고리의 다른 글
유니티 3D 게임 개발 - VFX 넣기 (0) | 2024.11.26 |
---|---|
유니티 3D 게임 개발 - TPS 조작 개발(Part 2 총기 조작 기능 구현, 장전 기능) (1) | 2024.11.24 |
유니티 3D 게임 개발 - TPS 조작 개발(Part 1 대각 이동) (0) | 2024.11.23 |
[유니티 게임 개발] 동방을 걷다 프로젝트 15 - 레이무 상애 엔딩 2024 05 30(PM 08:30) (0) | 2024.05.31 |
[유니티 게임 개발] 동방을 걷다 프로젝트 14 - 레이무 상애 엔딩 2024 05 30(AM 01:30) (0) | 2024.05.30 |