OldBlueWater/BlueWater/Assets/02.Scripts/Weapon/MeleeWeapon.cs
NTG 13cfeb3315 closed #9 근거리 Ai 공격, 충돌 테스트
#7 근거리 무기(MeleeWeapon) 추가
#8 부대 제어 수정 필요(기획 변경)

- Ai 버벅이던 현상 수정(Rigidbody interpolate 문제)
- UnitController 상세화(인스펙터창)
- 오펜스 관련 Ai 기본 설정
- Props 레이어 추가, House 태그 추가
- Physic 충돌 레이어 변경
- Ai 전체 프리팹 수정
- 테스트용 오펜스 ai 타겟 건물 추가
- Swordman 애니메이션 이벤트 누락 수정
2023-08-22 03:08:11 +09:00

64 lines
1.8 KiB
C#

using System;
using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class MeleeWeapon : MonoBehaviour
{
#region Property and variable
private bool isAttacked;
private AttackerType attackerType;
private AiStat attackerStat;
#endregion
#region Unity built-in function
private void OnTriggerEnter(Collider other)
{
if (isAttacked) return;
if (other.gameObject.layer == LayerMask.NameToLayer("HitBox"))
{
switch (attackerType)
{
case AttackerType.NONE:
break;
case AttackerType.OFFENSE:
if (!other.gameObject.CompareTag("Enemy") && !other.gameObject.CompareTag("House"))
{
return;
}
break;
case AttackerType.DEFENSE:
if (!other.gameObject.CompareTag("Player") && !other.gameObject.CompareTag("Pirate"))
{
return;
}
break;
default:
throw new ArgumentOutOfRangeException();
}
var iDamageable = other.GetComponentInParent<IDamageable>();
iDamageable.TakeDamage(attackerStat, iDamageable.AiStat);
isAttacked = true;
}
}
#endregion
#region Custom function
public void SetIsAttacked(bool value) => isAttacked = value;
public void SetAttackerType(AttackerType value) => attackerType = value;
public void SetAttackerStat(AiStat value) => attackerStat = value;
#endregion
}
}