진행한 것들

데미지 계산 적용 변경

데미지 계산 적용을 변경해야 하는 경우가 생겼다.

https://jcdevelop98.tistory.com/370

 

DevLog - 이그라엘(IGRAL) 전체 테스트와 데미지 계산

진행한 것들 전체 테스트 이번 주에 만든 적 패트롤, 추적, 공격과 플레이어 연속 공격을 한 씬에 넣어서 테스트 했다. 데미지 계산 Weapon이라는 클래스를 만들어 무기에 컴포넌트로 등록시키고 O

jcdevelop98.tistory.com

 

문제점 : 무기에서 OnTriggerEnter로 공격을 체크하니 뒤에 있는 캐릭터가 맞는다는 경우가 생겼다.

놀랍게도 공격 애니메이션 도움닫기이다

 

이를 해결하기 위한 방법을 생각해보았는데

1. 애니메이션 이벤트에서 Attack이 될 때 캐릭터의 앞에 평소에 꺼져있는 Box Collider Trigger를 하나 만들어 체크하고 데미지를 준다.

2. 애니메이션 이벤트에서 Attack이 될 때 캐릭터의 앞에 Ray를 쏴서 Enemy일 시 데미지를 준다.

 

선택한 방법

2번의 Raycast를 사용하기로 했는데 그 이유는 아래의 글 처럼 즉발적으로 체크하는 경우에서는 Raycast가 유리하다고 해서이다.

https://discussions.unity.com/t/should-i-use-raycasting-or-colliders/108320

 

Should I use raycasting or colliders?

Hello, I have quite a simple question. I am currently working on a project that I wish to put guns/weapons into. Now when it comes down to guns is it preferable to use raycasting to deal damage to enemies or actually instantiate a gameobject “bullet” w

discussions.unity.com

 

다음과 같은 방식으로 구현하게 되었는데

Animation Controller에 접근하여 AttackAction에 OnAttack을 등록한 뒤 애니메이션에 등록된 이벤트 호출 함수인 AttackEvent가 AttackAction을 호출하는 방식으로 구현하게 되었다.

public abstract class AnimationController : MonoBehaviour
{
    public event Action AttackAction;

    private void AttackEvent()
    {
        AttackAction?.Invoke();
    }
}
public class PlayerWeapon : Weapon
{
    protected override void OnAttack()
    {
        HealthSO targetSO = null;
        IDamageable damageable = null;
        Vector3 offsetVec = _myTrans.position;
        offsetVec.y = 0.5f;


        RaycastHit[] hits = Physics.RaycastAll(offsetVec, _modelTrans.forward, 10f, 1 << LayerMask.NameToLayer(targetTag));
        //int combo = _playerAnimationController.AttackCombo;

        foreach (RaycastHit hit in hits)
        {
            EnemyStatHandler statHandler = hit.collider.GetComponentInParent<EnemyController>().StatHandler;

            targetSO = statHandler.Data;
            damageable = statHandler;

            Attack(_playerSO, targetSO, damageable);
        }
    }
}

 

 

오늘의 이슈 / 내일 할 것

지난 주 이슈

공격 상태가 아님에도 Attack을 호출하여 적 끼리 OnTriggerEnter가 불려서 NullReferenceException이 발생

-> Raycast로 바꾼 뒤 Layer를 체크하여 타겟일 때만 검출하도록 해서 해결!

 

오늘 이슈

연속 공격 애니메이션과 AttackCombo에 문제 있음

 

금요일 날 할 것

예비군 갔다와서 ComboMod 적용

 

 

오늘의 회고

  오늘은 지난 주에 작업한 데미지 계산을 OnTriggerEnter에서 Raycast검출로 바꿨다. 총알 같은 발사체면 Collider 검출을 하고 즉발적인 검출이면 Raycast를 사용하면 된다고 이해하였다. 내일부터 동원 예비군 훈련이 있는데 팀원들한테 조금 미안한 감정이 든다. 그만큼 다녀와서 열심히 하고 뒤쳐지지 않도록 해야겠다. 금요일부터 다시 파이팅!

+ Recent posts