강의 20,21,22강 수강
강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding
20. Unit Animator Parameters (07:17)
Animation Paramters 는 네 종류가 있다. Float, Int, Bool, Trigger.
Trigger 는 boolean 비슷한 특수한 값이다. true 로 값을 바꾼 뒤 false 로 직접 바꿔줄 필요가 없다. 나중에 shoot 애니메이션 (총 쏘는 애니메이션?) 적용 시 사용해 볼 것이다.
Animator - Parameters 메뉴에 파라미터를 추가하고, Transition 의 Inspector - Conditions 섹션에서 해당 파라미터를 조건으로 지정해준다.

그 다음 스크립트에서 코드 작성
[SerializeField] private Animator unitAnimator;
unitAnimator.SetBool("IsWalking", true);
unitAnimator.SetBool("IsWalking", false);
21. Unit Rotate when Moving (05:10)
객체를 회전시키는 방법은 세 가지.
transform.rotation: Quaternion 사용transform.eulerAngles: 각도 사용transform.forward: Vector 사용
여기서는 가장 간단한 transform.forward 사용
private void Update()
{
// ...
float rotateSpeed = 10f;
transform.forward = Vector3.Lerp( // 두 백터를 interpolate 해주는 함수
transform.forward, // 현재 방향 백터. 매 프레임마다 바뀔 수 있음.
moveDirection, // 목표 방향 백터.
Time.deltaTime * rotateSpeed // rotateSpeed 를 곱해주지 않으면 너무 느리다.
);
// ...
}
22. Unit Selection (14:10)
여러 유닛 중 원하는 유닛을 선택하는 기능 구현.
일단 씬에 있던 기존 Unit 객체를 Project 로 드래그앤드랍 해서 재사용 가능하게 만들고, 재사용 가능해진 객체 (강의에서는 Prefab 이라고 말한다.) 를 다시 드래그앤드랍 해서 씬에 Unit 객체를 추가.
특정 객체 선택을 위해서는 마우스 Raycast 기능을 써야 하는데, 이 경우 객체가 충돌 가능해야 한다. 하지만 현재 Unit 객체는 선택이 가능하지 않으므로 Collider 를 설정해줘야 한다.
- Collider 를 특정 객체에만 지정하지 말고 그 객체의 Prefab 에 모두 적용되게끔 해줘야 한다.
- Collider 의 IsTrigger 플래그를 켜면 실제 물리적인 계산은 하지 않고 트리거로서만 동작하는 듯 하다.
Unit Prefab 에 Layer 도 "Units" 이라는 이름으로 새로 만들어줘서 지정.
private bool TryHandleUnitSelection()
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(
ray,
out RaycastHit raycastHit,
float.MaxValue,
unitLayerMask
))
{
if(raycastHit.transform.TryGetComponent<Unit>(out Unit unit))
{
seleectedUnit = unit;
return true;
}
}
return false;
}
특정 스크립트의 초기화를 빨리 하고 싶을 때는 Edit - Settings - Script Excution Order 를 사용.

apply 누르는 순간 값이 자동으로 조금 바뀌는 데 중요한 건 아닌듯.