내일배움캠프 23일차 TIL - 트러블 슈팅

권태하·2024년 5월 17일
post-thumbnail

트러블슈팅

1


적을 생성해서 총알이 생성되긴 하는데, 제자리에 계속 존재했다.
총알 이동과 관련된 함수가 미구현이었다.

    private void OnAim(Vector2 newAimDirection)
    {
        // 총알 발사 방향 설정
        aimDirection = newAimDirection;
    }
// ======== ProjectileController
    private void Update()
    {
        if (!isReady)
        {
            return;
        }

        currentDuration += Time.deltaTime;

        if (currentDuration >= attackData.duration)
        {
            DestoryProjectile();
        }

        _rigidbody.velocity = direction * attackData.speed;
    }


    public void InitializeAttack(Vector2 direction, AttackSO attackData)
    {
        this.direction = direction;
        this.attackData = attackData;

        UpdateProjectileSprite();
        currentDuration = 0;
        _spriteRenderer.color = attackData.projectileColor;

        isReady = true;
    }

    private void UpdateProjectileSprite()
    {
        transform.localScale = Vector3.one * attackData.size;
    }
    private void DestoryProjectile()
    {
        gameObject.SetActive(false);
    }

2


발사2가 먼저 작동
미사일이 바로 생성되어 초기화 방향인 오른쪽으로 발사 된다.

  1. 생애주기 문제인가?
    CallAttackEvent는 Update에서 호출되고
    CallLookEvent는 FixedUpdate에서 호출되기 때문에 순서상으로는 문제가 없다.

=> 튜터님께 상담
오xx 튜터님과 상담을 통해 Debug찍는 작업을 해보니

    public void CallAttackEvent(AttackSO attackSO)
    {
        OnAttackEvent?.Invoke(attackSO);
    }

    public void CallLookEvent(Vector2 direction)
    {
        OnLookEvent?.Invoke(direction);
    }

CallAttackEvent가 CallLookEvent보다 먼저 일어나는 로그를 확인했다.

이 부분을 고치려면 구조적으로 전체를 살펴봐야 하는데 당장 그렇게 할 여건은 아닌 것 같다 하셨고, 임시 방편으로 아직 방향이 정해지지 않았을 때 총알이 발사되지 않게 코드를 수정했다.

private Vector2 aimDirection = Vector2.zero;

    // ==============
    
private void OnShoot(AttackSO attackSO)
{
    if (attackSO == null || aimDirection == Vector2.zero)
    {
        return;
    }
    
}
    
profile
스터디 로그

0개의 댓글