
오늘 학습 키워드
최종 팀 프로젝트
오늘 학습 한 내용을 나만의 언어로 정리하기
파티클 시스템 붙이기
- 3D 파티클 시스템 에셋도 2D로 보이게 할 수 있음! 그냥 쓰면 됨
플레이어 FSM 멈추게 하기
runFSM = true;
private void Update()
{
if (runFSM)
{
currentState.HandleInput(this);
currentState.LogicUpdate(this);
}
// FSM이 멈춘 이유가 DieState가 아니면 기본 상태로 전환하고 속도 멈춤
else if (!IsCurrentState<DieState>())
{
Move.rb.velocity = Vector2.zero;
ChangeState<IdleState>(); // 기본 상태로 전환
}
}
private void LateUpdate()
{
if(!isLookLocked && runFSM) Move.Look();
}스킬에 이펙트 넣기
private float[] attackTimes =
{
(1.0f / ANIMATION_FRAME_RATE) * 8f,
(1.0f / ANIMATION_FRAME_RATE) * 16f,
(1.0f / ANIMATION_FRAME_RATE) * 22f,
};
private int attackTimesIndex = 0;
public async override void LogicUpdate()
{
if (attackTimesIndex < attackTimes.Length)
{
if (animRunningTime >= attackTimes[attackTimesIndex])
{
attackTimesIndex++;
await EffectManager.Instance.PlayEffectsByIdAsync(skillId, EffectOrder.Player, controller.gameObject,
new Vector3(2, 0.2f));
}
}
}
- 공격 이펙트가 나와야 하는 시작 시간대를 배열로 정해놓고
- 인덱스를 잡아둠
- 그리고 초마다 체크해서 시간 지났으면 인덱스 늘리고 애니메이션 재생
학습하며 겪었던 문제점 & 에러
문제 1
- 문제&에러에 대한 정의
스프라이트 이펙트가 내가 원하는 곳에 생기지 않았음.
- 해결 방법
보정 때문이었음.
Vector3 adjustedPosition = position;
Vector3 scale = target.transform.localScale;
adjustedPosition.x *= Mathf.Sign(scale.x);
adjustedPosition.y *= Mathf.Sign(scale.y);
adjustedPosition.z *= Mathf.Sign(scale.z);부모의 localScale.x가 -1 이면 자식들도 알아서 좌우로 반전되는데 그걸 모르고 위치를 한 번 더 돌려서 결과적으로 처음이랑 같은 위치가 된거임
- 새롭게 알게 된 점
오브젝트의 부모가 localScale.x -1이면 자식들도 알아서 좌우로 반전된다.