Unity_개발일지_06

홍신영·2024년 10월 7일
0

Unity

목록 보기
8/62

Pixel Per Unit (PPU)

스프라이트의 픽셀 수와 해당 스프라이트가 유니티 내에서 차지하는 공간의 관계를 말한다.

위 사진처럼 PPU를 직접 설정해 줄수 있는데, PPU에 높은 값을 입력해줄 수록 Sprite는 작아진다. PPU는 1 유닛(유니티 공간에서의 1)에 들어가는 픽셀 수 이기 때문에, 1 유닛에 들어가야 될 픽셀 수를 높히면(PPU), 스프라이트가 작게 보인다는 것.

10x10 스프라이트가 있고, PPU가 10이면 1 유닛에 스프라이트가 딱 맞다.
PPU를 20으로 한다면, 상대적으로 스프라이트가 작기에 1 유닛에 딱 맞지 않고 남는 공간이 많을 것이다.

높은 PPU를 사용하면 고해상도를 보여줄 수 있지만 그 만큼 부하도 있으니 적절히 사용해야된다.

월드 좌표계 / 로컬 좌표계

하이어락히에서 한 오브젝트에 자식 오브젝트를 만들고 하다보면 누구안에 누구 안에 누구...처럼 위치의 개념이 바뀌게 된다.
이 때, 절대 바뀌지 않는 게임 전체에서의 좌표가 월드 좌표계이다.
로컬 좌표계는 월드 안에 있는 오브젝트들의 좌표를 말한다.
월드 좌표에서 (0,0,0)에 있는 오브젝트1이 있을 때, 그 안에 새로운 오브젝트2를 만들어 주면
오브젝트2의 좌표는 (0,0,0)에 있는 (1,2,0) 이런식으로 될 것이다.

여튼 이러한 차이가 있으니 코드에서도 다르게 사용한다.
월드좌표계는
position, rotation, lossyScale이라는 함수를 사용하고,
로컬좌표계는
localPosition, localRotion, localScale을 사용한다.

GetAxis / GetAxisRaw

GetAxis는 입력을 받을 때 사용하는 함수이다. 방향키에 적용해보니, -1,0,1에 가까워지는 함수인데 문제점이 가까워지는 함수이다보니 움직일 때 미끄러지는 문제가 있다.
그래서 -1,0,1로 고정해주는 GetAxisRaw를 사용한다.

Time.deltaTime

컴퓨터 마다 성능이 다르기에 프레임 차이가 있으면 게임속도도 달라질 수 있다. 프레임이 어떠하든 일정한 속도로 게임이 진행되도록 하는데 사용된다.
200프레임 컴퓨터는 200을 나누어 1프레임 당 움직이는 속도를 1로 맞춘다면,
60프레임 컴퓨터는 60으로 나누어 1프레임 당 움직이는 속도를 1로 맞추는 등의 기능이 들어 있는 것 같다.

SerializeField

private으로 선언한 변수를 인스펙터에서 접근 가능하게 해준다.

안전하게 델리게이트 호출하기(null 조건부 연산자)

public event Action<Vector2> OnMoveEvent;

public void CallMoveEvent(Vector2 direction)
{
    OnMoveEvent?.Invoke(direction);
}

위처럼 ?를 사용하면 OnMoveEvent가 구독된 경우에만 호출이 된다. 구독자가 없다면 null이므로 실행하지 않는다. null 조건부 연산자라고 한다.

InputValue / Get

InputValue는 inputSystem에 기능으로, 키보드나 마우스의 입력값을 받아오는 기능이다.
받아온 Value에 원하는 타입으로 지금은 방향으로 받기 위해 Value.Get();를 사용하였다.

public void OnMove(InputValue value) //InputValue 마우스, 키보드 등의 입력을 전달
{
  //입력이 담겨있는 value에 원하는 타입(Vector2)를 가져오기 위해Get<T> 사용
  //즉 입력값을 Vector2로 가져와 moveInput에 저장하여 반환
  Vector2 moveInput = value.Get<Vector2>().normalized; 
  CallMoveEvent(moveInput);
}
profile
게임 클라이언트 개발자

0개의 댓글