1. 파티클 시스템의 Color over Lifetime의 투명도
아래쪽에 있는 위쪽을 가리키는 듯한 모양의 오각형을 클릭하면 해당 위치의 RGB 색상
위쪽에 있는 아래쪽을 가리키는 듯한 모양의 오각형을 클릭하면 해당 위치의 알파(투명도) 값
다른 색상 팔레트와는 다르게 이렇게 나뉘어져 있습니다.
2. 타일맵
2D 게임 개발에서 격자 기반 맵을 쉽게 생성하고 관리할 수 있는 기능
타일이라는 작은 조각들을 사용하여 맵을 효율적으로 구성
1) 생성 방법
Create >> 2D Object >> Tilemap >> 만들고자 하는 타일맵 형태에 맞게 선택
여기서는 평면으로 사각형 타일을 배치할 것이기에 Rectangular을 선택했습니다.
2) 타일 그리기
(1) 팔레트 메뉴 : 에디터 상단 메뉴 Window >> 2D >> Tile Palette
(2) 팔레트 생성 : Create New Palette로 경로, 이름을 정해서 팔레트 생성
(3) 사용할 스프라이트 등록
그림 그릴 때를 생각하면 됩니다. 팔레트에 사용할 물감을 짜두죠.
여기서는 물감이랑 똑같은 역할을 하는 최소 단위인 타일에 그려넣을 스프라이트들을 드래그 앤 드롭하여 등록해둡니다.
그러면 해당 스프라이트는 여러번 사용할 준비가 됩니다.
(4) 그리세요!
팔레트에서 격자에 배치할 스프라이트를 선택하고
씬 뷰에 마우스를 가져가면
격자에 해당 스프라이트가 배치될 때의 모양을 보여줍니다.
이때 좌클릭하면 배치!
드래그하여 해당 스프라이트를 여러 타일에 채워넣을 수도 있습니다.
3) 타일 팔레트 기능
왼쪽 버튼부터 오른쪽 순서로 설명하겠습니다
(1) 그리드 선택 (S) : 그리드, 영역을 선택하여 해당 위치의 정보를 인스펙터에서 보고 수정할 수 있습니다.
(2) 선택 영역 이동 (M) : 선택한 그리드를 이동할 수 있습니다.
(3) 브러쉬 (B) : 타일맵을 그릴 수 있습니다. 팔레트에 등록한 스프라이트를 클릭하면 자동으로 해당 버튼으로 변경됩니다.
브러쉬를 선택하고,
[ : 선택한 스프라이트 시계 방향으로 90도 회전,
] : 선택한 스프라이트 반시계 방향으로 90도 회전,
Shitf + ] : Y축 Flip,
Shift + [ : X축 Flip
(4) 사각형 브러쉬 (U) : 드래그하면 사각형 모양으로 타일맵을 그릴 수 있습니다.
(5) 스포이드 (I) : 스프라이트가 배치된 타일을 선택하면 해당 스프라이트를 선택한 브러쉬가 됩니다.
(6) 지우개 (D) : 배치된 타일을 지웁니다. 사용법은 브러쉬와 동일합니다.
(7) 영역 채우기 (G) : 연속된 영역을 선택한 스프라이트로 채웁니다. 그리드에 마우스를 가져다 대면 어떻게 채울지 미리 보여줍니다.
4) 콜라이더
맵을 만들다보면 지나갈 수 없어야 하는 지형들이 있습니다. 그 곳을 막아봅시다.
충돌 판정은? 콜라이더!
그리고 타일맵에 쓰는 콜라이더가 따로 있습니다.
Create >> 2D Object >> Tilemap >> Rectangular 로 생성한 타일맵 오브젝트에
TileMap Collider 2D 컴포넌트를 추가합니다.
팔레트에서 아무 스프라이트를 선택하고 지나갈 수 없는 영역에 그려줍니다.
해당 영역에 타일맵 콜라이더가 그려집니다.
3. Animator.StringToHash(string animName)
Animator의 Set, Get 으로 시작하는 변수를 설정하거나 가져오는 메서드들은
함수 오버로딩을 이용해 다른 매개변수로도 호출할 수 있게끔 해두었습니다.
string Name >> 파라미터 이름
int id >> 파라미터 id
애니메이터 탭에 들어가 보면 애니메이션 전환 조건을 설정하기 위한 파라미터들을 등록할 수 있습니다.
여기서 등록한 파라미터의 이름 확인이 가능한데,
해당 파라미터들의 이름에 대응하는 정수형 id도 있습니다.
문자열을 비교보다 정수를 비교하는 쪽이 성능, 속도면에서 더 좋습니다.
애니메이션 전환은 특히나 게임 도중 자주 호출할 내용인데
id를 사용하는 방법을 취하면 더 많은 리소스를 절감할 수 있을 것입니다.
하지만 파라미터들의 id는 바로 확인할 수 없기에
파라미터 이름을 통해 애니메이터 내부에서 사용하는 id를 가져오는 메서드를 만들어 두었습니다.
using UnityEngine;
public class AnimationHandler : MonoBehaviour
{
// 문자열 비교보다 숫자 비교가 빠르다!
// 그래서 애니메이션 파라미터 이름을 해당 애니메이션에서 쓰는 파라미터들의 id로 변경 >> StringToHash
static readonly int IsMoving = Animator.StringToHash("isMove");
static readonly int IsDamage = Animator.StringToHash("isDamage");
protected Animator animator;
protected virtual void Awake() => animator = GetComponentInChildren<Animator>();
public void Move(Vector2 dir) => animator.SetBool(IsMoving, dir.magnitude > .5f);
public void Damage() => animator.SetBool(IsDamage, true);
public void InvincibilityEnd() => animator.SetBool(IsDamage, false);
}
이름을 id로 바꿔서 1번 기억해놓은 이후부터는
애니메이터 파라미터에 대한 Set, Get 함수의 매개변수 이름을 쓰는 부분에 구한 id를 넣어주면 똑같이 사용할 수 있습니다.
'스파르타코딩클럽_Unity개발과정' 카테고리의 다른 글
4주차 개인 과제 트러블 슈팅 내용 (1) | 2025.05.07 |
---|---|
유니티 입문 - TopDown (2) (0) | 2025.05.05 |
유니티 입문 강의 - The Stack (1) | 2025.05.01 |
유니티 기본 강의 - FlappyPlane (0) | 2025.04.29 |
3주차 팀 프로젝트(텍스트 턴제 RPG) - 발표일 (0) | 2025.04.28 |