[25.04.29] TIL(유니티 입문 강의와 개인 프로젝트 & 트러블 슈팅)

설민우·2025년 4월 29일

내일배움캠프 - Unity

목록 보기
32/85

< 유니티 입문 시작 >

29일 화요일부터 이제 유니티 입문 과정이 시작되었습니다. 유니티 입문 강의에서는 플래피버드(2D), Stack 게임(3d), 탑다운 슈팅 게임(2d) 강의를 통해 유니티의 기본적은 코드 작성 방식에 대해서 학습합니다.

  • 플래피 버드 게임을 만드는 것을 보면서 "와 이거 게임 동아리에서 처음 개발을 배울 때 했던건데" 라는 생각이 들었습니다. 그 때 선배들이 했던 말이 플래피 버드만 혼자서 만들 수 있다면, 다른 모든 게임을 만들 수 있다는 농담과 함께 말입니다.
  • Stack 게임은 매우 흥미로웠습니다. 특히 상자를 쌓을때 잘리는 부분과 남는 부분에 대한 계산 공식이 매우 깔끔하여 신기했습니다. 아마 혼자서 작성 해보라고 한다면 그렇게 똑같이는 작성하지 못했을 것이란 생각이 들었습니다.
  • 탑 다운 슈팅 게임은 유니티 2d 개발의 정수를 보는 것 같은 기분이 들었습니다. 사실상 2d 게임 스타터 팩과 같은 형태로 작성해 주셔서 추후 다른 프로젝트에서도 써먹기 좋아 보였습니다. 다만 상속 구조와 여러 연산들이 처음 유니티를 접하게 되는 분들께는 꽤나 벽으로 다가오지 않을까 하는 생각이 들었습니다.

< 개인 프로젝트>

강의도 강의이지만 일단 가능한 부분에서 부터 개인 프로젝트를 진행해 보았습니다.
오늘은 기본적인 조작 및 플레이어 컨트롤러 생성, 그리고 카메라 연결과 맵 생성을 진행했습니다.

( 트러블 슈팅 )

문제 1. 탑다운 형식에서의 점프 구현 문제

배경 :

  • 필수 구현인 기본 조작과 점프를 구현을 진행하려고 하는 상황에서 기본 조작 작업을 유니티 뉴 인풋 시스템으로 끝내고 점프 작업을 시작하려던 상황이었습니다.

문제점 :

  • 기본적으로 2d 탑 다운 형식을 구현할때는 rigidbody를 쓰더라도 gravity 값을 0으로 해 둡니다. 그렇지 않으면 아래 방향으로 계속해서 떨어져 버리기 때문입니다.
  • 하지만 이렇게 되면 기본적인 방법, rigidbody에 addforce를 해서 점프를 구현하는 방법은 사용 할 수 없게 되어 버립니다. 이 방법을 적용해 보면 이동이 아예 안되거나, 점프에 섞여서 출력이 이상해져 버리거나 영원히 하늘로 날아가 보리게 됩니다.

시도해 본 것:

  • 처음에 시도해 보려고 했던 방법은 gravity =1 로 두되, 자신의 위치를 기억해서 점프를 했다가 자기 높이로 돌아오면 다시 gravity = 0 으로 변경하는 방법으로 구현해보면 어떨까 싶었습니다. 그러나 점프를 하면서 윗 방향으로 진행하게 되면 이 초기화가 진행되지 않는 문제가 있었습니다.

해결 방법 :

  • 그러다가 강의를 보면서 다른 해결방법이 떠올랐고 이 방법으로 문제를 해결하였습니다. 기본적인 조작은 부모(transfrom만 존재)에서 컨트롤 하고 점프는 자식 오브젝트의 스프라이트랜더러에서 처리하는 것입니다.
  • 또한 jumpPower 와 gravity 값을 별도로 지정하여 아래와 같은 방식으로 등속으로 점프를 하는 코드를 작성했습니다.
    protected override void UpdateJump()
    {
        if (!_isGrounded)
        {
            _verticalSpeed -= _gravity* Time.deltaTime;
            _height += _verticalSpeed * Time.deltaTime;

            if(_height <= 0f)
            {
                _height = 0f;
                _verticalSpeed = 0f;
                _isGrounded = true;
            }
        }

        _spriteRenderer.transform.localPosition = new Vector3(0, _height, 0);
    }
  • 이 방법을 사용하게 되면 어차피 자식 오브젝트만 변화하게 되기 때문에 부모에게는 영향이 없이 이동하면서도 점프를 진행할 수 있습니다.

알게 된 것 :

  • 보여지는 부분을 정직하게 작업할 필요 없이 꼼수? 처럼 보이게만 잘 구현해도 문제없이 작업이 가능하다, 이런 부분에서의 노하우가 많이 필요하다는 것을 느꼈습니다.

문제 2. 카메라 이동시, 타일맵이 흐리거나 움직이는 문제

배경 :

  • 배경화면을 생성하고 이제 카메라를 이동시킬 때 문제가 발생했습니다.

문제점 :

  • 카메라가 이동 할 때마다 뒤의 배경이 약간씩 흐려지거나 일그러지는 모습이 보였습니다.

시도해 본 것:

  • 시도 없이 즉시 해결로 진행 했습니다.

해결 방법 :

  • 픽셀 퍼펙트 카메라를 사용했습니다. 이를 위해서 URP 설치와 2D 랜더러를 생성하여 프로젝트 세팅해서 연결해 주었습니다.

알게 된 것 :

  • 의외로 이런 모든 사람이 겪는 문제는 쉽게 그 해결 방법을 찾을 수 있다!
profile
클라이언트 개발자를 지망하고 있습니다.

0개의 댓글