[2025/05/09]TIL

오수호·2025년 5월 9일

TIL

목록 보기
15/60

오늘은 팀 프로젝트 중 발생한 트러블 슈팅을 TIL로 적어볼까 한다.

우리의 팀 프로젝트는 유명한 게임인 FireBoy & WaterGirl 게임을 오마주하여 만든 게임이다.

트러블 슈팅

1. 문제상황

InputSystem을 사용하여, Player를 조종할 수 있도록 구현하려 하였다. 그런데, AngelController에서 만든 메소드 OnMove가 InputSystem에서 인식하지 못하여 MissingMethodException: Method 'AngelController.OnMove' not found. 에러가 발생하였다.

해결방법

AngelController에서 OnMove메서드의 매개변수로 InputValue를 매개변수타입으로 주어야하는데 InputAction을 타입으로 주어
InputSystem에서 OnMove메서드를 인식하지 못했다.


2. 문제상황

PlayerController의 기본적인 점프동작을 구현하기 위해서 GroundCheck()메서드를 만들었다.
GroundCheck()를 통해서 IsGround가 true가 되면, Player가 땅에 닿았으므로 점프가 가능해지고 false가 되면 Player는 공중에 있는 상태이므로 점프할 수 없다.
GroundCheck()메서드는 Player오브젝트의 중심점에서 아래쪽 방향으로 Raycast를 발사해서 Player가 땅에 닿았는 지 판별하는 메서드이다.
이때, Raycast가 땅에 닿지 않았음에도 반환값이 true로 반환되어 jump를 무한히 할 수 있는 버그가 있다.

해결방법

Player도 Rigidbody와 collider를 가지고 있으므로, Raycast가 Player의 중심점에서 발사되기 때문에 Player와 항상 먼저 충돌하기 때문에 true를 반환하게된다.
따라서, LayerMask를 만들어서 다른 Layer들은 모두 무시하고 GroundLayer를 가진 충돌체만 충돌하도록 만들었다.


3. 문제상황

Player가 죽었을 때, Player의 자식오브젝트로 붙어있는 DeathParticle의 컴포넌트인 ParticleSystem을 Play()시켜서 사망 파티클을 구현하려 했다. 이 상황에서 Player오브젝트가 사망했을 시 Player오브젝트를 Destroy해버리면, 자식오브젝트인 DeathParticle도 함께 사라지기 때문에 죽는 Particle이 제대로 재생되지않고 함께 사라지는 문제가 있었다.

해결방법

Particle을 프리팹화 시킨 후, AnimationEvent에서 Particle을 Instactiate를 통해 오브젝트를 생성하여 사망 파티클을 생성하였고 마찬가지로 AnimationEvent로 Player 오브젝트의 Destroy도 함께 진행하여 Player의 사망애니메이션에 맞춰서 Player 오브젝트가 사라지도록 만들었다.


profile
게임개발자 취준생입니다

0개의 댓글