진행한 것들
데미지 계산 적용 변경
데미지 계산 적용을 변경해야 하는 경우가 생겼다.
https://jcdevelop98.tistory.com/370
문제점 : 무기에서 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
다음과 같은 방식으로 구현하게 되었는데
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를 사용하면 된다고 이해하였다. 내일부터 동원 예비군 훈련이 있는데 팀원들한테 조금 미안한 감정이 든다. 그만큼 다녀와서 열심히 하고 뒤쳐지지 않도록 해야겠다. 금요일부터 다시 파이팅!
'스파르타 Unity 1기' 카테고리의 다른 글
DevLog - 이그라엘(IGRAL) 콤보 애니메이션 버그 (1) | 2023.11.13 |
---|---|
DevLog - 이그라엘(IGRAL) 죽음 상태 추가 (0) | 2023.11.10 |
DevLog - 이그라엘(IGRAL) 전체 테스트와 데미지 계산 (1) | 2023.11.03 |
DevLog - 이그라엘(IGRAL) 플레이어 연속 공격 (0) | 2023.11.02 |
DevLog - 이그라엘(IGRAL) 적 순찰 (0) | 2023.11.01 |