오늘 학습 키워드

최종 팀 프로젝트

오늘 학습 한 내용을 나만의 언어로 정리하기

파티클 시스템 붙이기

  • 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이면 자식들도 알아서 좌우로 반전된다.