TIL - 24.03.18 최종 프로젝트

Amberjack·2024년 3월 18일
0

TIL

목록 보기
60/83

24.03.18 최종 프로젝트

오늘은 근접 무기의 공격을 구현했다. 코루틴과 Vector3.Lerp를 활용하여 무기의 이동을 구현했고, Animation Event를 통해 공격을 구현했다.

Vector3.Lerp

참고하기
https://www.blueraja.com/blog/404/how-to-use-unity-3ds-linear-interpolation-vector3-lerp-correctly

위의 글을 토대로 선형 보간을 활용할 때 Percentage를 통해 선형 보간을 하는 방법을 사용했다.

private void FixedUpdate()
{
    // 선형 보간 시작한 시간
    float timeSinceStarted = Time.time - _timeStartedMoving;
    // 선형 보간 진행 정도
    float percentageComplete = timeSinceStarted / (_weaponData.AtkSpeed / 3);

    if (Target.Count != 0 && _isMoving && _canAttack)
    {
        // 근접 공격 이동
        transform.position = Vector3.Lerp(transform.position, _targetPos, percentageComplete);

        // 이동이 완료되면
        if(percentageComplete >= .5f)
        {
            _animationEnd = false;
            Debug.Log("Melee Attack");
            // 공격 애니메이션 재생
            _animator.SetTrigger("Attack");
            _animator.SetFloat("AttackSpeed", 1 + _weaponData.AtkSpeed);
        }
        if (percentageComplete >= 1f)
        {
            _effect.SetActive(true);
            _timeStartedMoving = Time.time;
            _canAttack = false;
        }
    }
    else if(_animationEnd)
    {
        _effect.SetActive(false);

        transform.position = Vector3.Lerp(transform.position, _weaponPivot, percentageComplete);
        if (percentageComplete >= 1)
        {
            Debug.Log("Melee Attack End");
            Target.Clear();
            _canAttack = true;
        }
    }
}

좀 엉망진창에 이렇게 작성해도 되는지 모르겠지만, 어쨌든 드디어 무기가 목표 위치로 이동해서 타격을 하고 다시 돌아오는 것을 구현했다...

팀 회의

오늘은 발사체와 캐릭터의 공격에 대한 토의를 했었다.

발사체

발사체를 string으로 해서 tag로 찾는 것 보다, id를 통해 찾기로 얘기가 되었다.

캐릭터의 공격

캐릭터 공격 시 물리 공격, 마법 공격으로 나눌 지에 대해 토의를 했었다. 물리 마법으로 할지, 근접 원거리로 나눌지 토의를 했으나 결국 물리 마법으로 진행하기로 했다.

0개의 댓글