[내배캠] 유니티 입문 개인과제#1

Sungchan Ahn(안성찬)·2024년 10월 10일

내일배움캠프

목록 보기
40/104

2D TopDown 게임

  • Unity New Input System을 활용하여 캐릭터 움직임 제어하기
  • TileMap으로 맵 제작
  • 카메라가 캐릭터를 따라 움직이게 하기
  • 캐릭터 애니메이션 추가

오늘 발생한 문제 1

맵 테두리에 벽을 만들고 Tilemap Collider Component를 추가하여 캐릭터 Collider와 충돌하게 설정하였는데 벽에 딱 붙어서 이동하다 보면 캐릭터가 멈추는 현상이 발생했다.
맵을 계속 돌아다니면서 어디에서 멈추는지 확인한 결과 Tile-Tile Collider 사이에서(Tile을 지나고 다음 Tile에 닿을 때) 멈춘다는 것을 확인했고 문제를 해결하기 위해 Collider를 변경하는 방법을 알아보았다.

해결

  1. Tilemap Collider의 Used by Composite 항목을 체크(true로 변경)한다.
  2. Composite Collider 2D Component를 추가한다.
  3. Rigidbody 2D Component가 함께 생성되는데, Body Type을 Static으로 바꿔준다.

Tilemap Collider는 각각의 타일을 Collider로 만드는데 Composite Collider를 사용하게 되면 하나의 Collider 형태로 합쳐져 타일과 타일 사이에 끼일 일이 없어진다.

오늘 발생한 문제 2

타일 맵 테두리에 벽을 만들 때 캐릭터가 위로 올라와야 하는 부분과 가려져야 하는 부분을 고려하지 않고 한번에 만들었다.

해결

두 부분을 BackWall과 FrontWall로 나누고 Layer를 설정하여 각각 플레이어보다 뒤, 앞에 오게 설정하였다.

오늘 구현한 것 : 카메라 - 캐릭터 따라가기

public class MainCameraController : MonoBehaviour
{
    [SerializeField] Transform player;
    [SerializeField] float smoothing = 0.2f;

    private void FixedUpdate()
    {
        Vector3 targetPos = new Vector3(player.position.x, player.position.y, transform.position.z);
        transform.position = Vector3.Lerp(transform.position, targetPos, smoothing);
    }
}

Vector3.Lerp(선형보간)을 이용하여 카메라의 위치가 부드럽게 변경되게 설정하였다.
플레이어 캐릭터의 이동은 Rigidbody를 건드리기 때문에 FixedUpdate를 사용하고 있다. Camera도 이에 맞춰 FixedUpdate를 사용해주었다.

profile
게임 개발 기록

0개의 댓글