스파르타 내배캠 35일차 TIL
C1조_ 1조라도 안 보이면
컨디션 이슈로 진행이 하루 씩 밀린 기분이다... 플레이어를 완료하고 슬슬 다른 쪽을 진행하고 싶은 마음과 집중이 안된다는 핑계로 딴 짓을 하는 마음이 상충되는 하루였다. 어쨌든 오늘 완료한 작업에 대해 작성 해보도록 하겠다.
팀 과제 진행 현황
달릴 때 스태미나 사용
플레이어가 달릴 때 스태미나를 사용하고 스태미나를 전부 사용하면 달릴 수 없다. 달리기를 안 할 때는 스태미나가 다시 누적된다.
플레이어 애니메이션
플레이어의 기본 자세, 걷는 자세, 뛰는 자세를 달리하여 적용 시켰다.
팀 과제 진행 예정
플레이어가 잡혔을 때
추격자에게 잡혔을 때 게임 오버가 되는 화면 구성 및 구현.
맵 전체 조명 수정 및 손전등 끄고 켜기
맵 전체적인 조도를 낮추고 플레이어가 손전등을 착용했을 때 끄고 켤 수 있게 구현
트러블 슈팅
1. 애니메이션 연속 호출
오류를 급하게 수정하느라 오류 난 화면을 찍을 생각을 못해서 이미지를 대신 가져왔다. 발생한 오류는 Idle이나 Walk 상태일 때 Run 애니메이션을 동작하게 하면 Run01-Forward가 끝까지 플레이 되지 않고 계속 호출되는 상황이 있었다. 나는 달리기 할 때 애니메이션을 불러오는 과정이 잘못된 줄 알았는데 그것이 아니었다. 걷다가 뛰게 되면 IsWalking, IsRunning 값 모두 true값이 되서 walk와 run이 짧게 반복되고 있었다. 그래서 호출하는 코드 부분에 서로 겹치지 않게 코드를 추가했다.
Delegate / Action 사용
델리게이트에 대한 자세한 내용은 다른 블로그를 참고하길 바란다...
이전까지는 공부 해보니 엄청 유용하고 많이 써먹겠는데? 싶었지만 막상 사용하려면 어떻게 사용하지 한참 바라보기만 했던 것 같다. 그런데 요번 기회에 쉽게 다른 메소드를 호출하여 사용하고 싶어서 큰 결심을 해봤다. 결론은 나름 성공적. 이렇게 쓰는 것이 100점인가 하면 잘 모르겠지만 어쨌든 코드가 문제 없이 돌아가니 다행이지 않나 싶다.
일단 프로젝트에 이벤트로 호출할 메소드를 컨트롤할 수 있는 스크립트를 만들었다.
public class Controller : MonoBehaviour // WK interact 이벤트 함수 생성
{
public event Action<Vector2> OnMoveEvent;
public event Action<Vector2> OnLookEvent;
public event Action<float> OnRunEvent;
public event Action OnInventoryEvent;
public event Action OnInteracEvent;
public void CallMoveEvent(Vector2 direction)
{
OnMoveEvent?.Invoke(direction);
}
public void CallLookEvent(Vector2 direction)
{
OnLookEvent?.Invoke(direction);
}
public void CallRunEvent(float value)
{
OnRunEvent?.Invoke(value);
}
public void CallInventoryEvent()
{
OnInventoryEvent?.Invoke();
}
public void CallInteracEvent()
{
OnInteracEvent?.Invoke();
}
}
그리고 정의한 메서드를 이용해서 A라는 행동을 할 때 이 이벤트가 작동될 수 있게 정의된 함수를 호출했다.
public void OnLook(InputValue value)
{
mouseDelta = value.Get<Vector2>();
CallLookEvent(mouseDelta);
}
public void OnRun(InputValue value)
{
float runValue = value.Get<float>();
CallRunEvent(runValue);
}
public void OnInventory(InputValue value)
{
CallInventoryEvent();
}
마지막으로 A 행동할 때 호출되게 되는 함수를 event로 불러올 수 했다.
private void Start()
{
CharacterManager.Instance.Player.controller.OnMoveEvent += Move;
CharacterManager.Instance.Player.controller.OnInventoryEvent += UseInventory;
CharacterManager.Instance.Player.controller.OnRunEvent += Run;
CharacterManager.Instance.Player.controller.OnLookEvent += Camera;
}
private void Move(Vector2 direction)
{
...
}
private void Run(float value)
{
...
}
...
'Unity > TIL' 카테고리의 다른 글
3번째 팀프로젝트 마무리 (0) | 2024.06.11 |
---|---|
Unity FBX 파일, 에셋 애니메이션 (2) | 2024.06.07 |
Unity InputSystem: Send Message (1) | 2024.06.04 |
유니티 숙련 팀프로젝트 게임 기획 (0) | 2024.06.03 |
3번째 과제 마무리 (1) | 2024.05.30 |