parent
de69533b8d
commit
243fcbd0ef
File diff suppressed because it is too large
Load Diff
Binary file not shown.
BIN
BlueWater/Assets/01.Scenes/02.Main_TG/NavMesh-Grounds.asset
Normal file
BIN
BlueWater/Assets/01.Scenes/02.Main_TG/NavMesh-Grounds.asset
Normal file
Binary file not shown.
@ -1,7 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 4ff1f29eab234cf4490d9bb383892c44
|
guid: 2fac3aeaa82ea9148ac35f80b65e67dc
|
||||||
DefaultImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 23800000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
@ -96,6 +96,8 @@ namespace BlueWaterProject
|
|||||||
protected static readonly WaitForSeconds FindTargetWaitTime = new(0.5f);
|
protected static readonly WaitForSeconds FindTargetWaitTime = new(0.5f);
|
||||||
private static readonly WaitForSeconds CheckAgentArriveTime = new(0.1f);
|
private static readonly WaitForSeconds CheckAgentArriveTime = new(0.1f);
|
||||||
|
|
||||||
|
private delegate AiView GetAiViewDataDelegate(string viewIdx);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Unity built-in function
|
#region Unity built-in function
|
||||||
@ -117,6 +119,7 @@ namespace BlueWaterProject
|
|||||||
InitStart();
|
InitStart();
|
||||||
ExecuteFindTarget();
|
ExecuteFindTarget();
|
||||||
Attack();
|
Attack();
|
||||||
|
navMeshAgent.stoppingDistance = AiStat.AtkRange;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisable()
|
private void OnDisable()
|
||||||
@ -128,6 +131,44 @@ namespace BlueWaterProject
|
|||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
aiAnimator.SetFloat(SpeedHash, navMeshAgent.velocity.normalized.magnitude);
|
aiAnimator.SetFloat(SpeedHash, navMeshAgent.velocity.normalized.magnitude);
|
||||||
|
|
||||||
|
if (!TargetTransform || !navMeshAgent.enabled) return;
|
||||||
|
|
||||||
|
var distanceToTarget = Vector3.Distance(transform.position, TargetTransform.position);
|
||||||
|
|
||||||
|
navMeshAgent.isStopped = distanceToTarget <= navMeshAgent.stoppingDistance;
|
||||||
|
|
||||||
|
// switch (AiStat.AttackerType)
|
||||||
|
// {
|
||||||
|
// case EAttackerType.NONE:
|
||||||
|
// break;
|
||||||
|
// case EAttackerType.OFFENSE:
|
||||||
|
// navMeshAgent.SetDestination(distanceToTarget <= AiStat.AtkRange ? transform.position : TargetTransform.position);
|
||||||
|
// break;
|
||||||
|
// case EAttackerType.DEFENSE:
|
||||||
|
// switch (AiStat.DefenseType)
|
||||||
|
// {
|
||||||
|
// case EDefenseType.NONE:
|
||||||
|
// print("AiStat.DefenseType == NONE Error");
|
||||||
|
// break;
|
||||||
|
// case EDefenseType.STRIKER:
|
||||||
|
// navMeshAgent.SetDestination(distanceToTarget <= AiStat.AtkRange ? transform.position : TargetTransform.position);
|
||||||
|
// break;
|
||||||
|
// case EDefenseType.MIDFIELDER:
|
||||||
|
// navMeshAgent.SetDestination(distanceToTarget <= AiStat.AtkRange ? transform.position : TargetTransform.position);
|
||||||
|
// break;
|
||||||
|
// case EDefenseType.DEFENDER:
|
||||||
|
// navMeshAgent.SetDestination(distanceToTarget <= AiStat.AtkRange ? transform.position : TargetTransform.position);
|
||||||
|
// break;
|
||||||
|
// case EDefenseType.KEEPER:
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// throw new ArgumentOutOfRangeException();
|
||||||
|
// }
|
||||||
|
// break;
|
||||||
|
// default:
|
||||||
|
// throw new ArgumentOutOfRangeException();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FixedUpdate()
|
private void FixedUpdate()
|
||||||
@ -177,7 +218,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
public void TakeDamage(float attackerPower, float attackerShieldPenetrationRate, Vector3? attackPos = null)
|
public void TakeDamage(float attackerPower, float attackerShieldPenetrationRate, Vector3? attackPos = null)
|
||||||
{
|
{
|
||||||
if (attackPos != null && AiStat.AttackerType == EAttackerType.DEFENSE && !TargetTransform)
|
if (attackPos != null && navMeshAgent.enabled && AiStat.AttackerType == EAttackerType.DEFENSE && !TargetTransform)
|
||||||
{
|
{
|
||||||
BeAttackedMovement((Vector3)attackPos);
|
BeAttackedMovement((Vector3)attackPos);
|
||||||
}
|
}
|
||||||
@ -238,7 +279,7 @@ namespace BlueWaterProject
|
|||||||
[field: SerializeField] public Transform TargetTransform { get; set; }
|
[field: SerializeField] public Transform TargetTransform { get; set; }
|
||||||
|
|
||||||
|
|
||||||
private const int TARGET_MAX_SIZE = 30;
|
protected const int TARGET_MAX_SIZE = 30;
|
||||||
|
|
||||||
public void DrawGizmosInFieldOfView()
|
public void DrawGizmosInFieldOfView()
|
||||||
{
|
{
|
||||||
@ -297,6 +338,17 @@ namespace BlueWaterProject
|
|||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TargetTransform && navMeshAgent.enabled)
|
||||||
|
{
|
||||||
|
var distanceToTarget = Vector3.Distance(transform.position, TargetTransform.position);
|
||||||
|
|
||||||
|
navMeshAgent.isStopped = distanceToTarget <= navMeshAgent.stoppingDistance;
|
||||||
|
if (distanceToTarget > navMeshAgent.stoppingDistance)
|
||||||
|
{
|
||||||
|
navMeshAgent.SetDestination(TargetTransform.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
yield return FindTargetWaitTime;
|
yield return FindTargetWaitTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -312,24 +364,24 @@ namespace BlueWaterProject
|
|||||||
break;
|
break;
|
||||||
case EDefenseType.STRIKER:
|
case EDefenseType.STRIKER:
|
||||||
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
||||||
if (TargetTransform)
|
// if (TargetTransform)
|
||||||
{
|
// {
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
// Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
case EDefenseType.MIDFIELDER:
|
case EDefenseType.MIDFIELDER:
|
||||||
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
||||||
if (TargetTransform)
|
// if (TargetTransform)
|
||||||
{
|
// {
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
// Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
case EDefenseType.DEFENDER:
|
case EDefenseType.DEFENDER:
|
||||||
SetNearestTargetInDefense(defensePos, AiStat.DefenseRange);
|
SetNearestTargetInDefense(defensePos, AiStat.DefenseRange);
|
||||||
if (TargetTransform)
|
// if (TargetTransform)
|
||||||
{
|
// {
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
// Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
}
|
// }
|
||||||
break;
|
break;
|
||||||
case EDefenseType.KEEPER:
|
case EDefenseType.KEEPER:
|
||||||
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
||||||
@ -338,11 +390,22 @@ namespace BlueWaterProject
|
|||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (TargetTransform && navMeshAgent.enabled)
|
||||||
|
{
|
||||||
|
var distanceToTarget = Vector3.Distance(transform.position, TargetTransform.position);
|
||||||
|
|
||||||
|
navMeshAgent.isStopped = distanceToTarget <= navMeshAgent.stoppingDistance;
|
||||||
|
if (distanceToTarget > navMeshAgent.stoppingDistance)
|
||||||
|
{
|
||||||
|
navMeshAgent.SetDestination(TargetTransform.position);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
yield return FindTargetWaitTime;
|
yield return FindTargetWaitTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetNearestTargetInOffense<T>(List<T> targetList)
|
public virtual void SetNearestTargetInOffense<T>(List<T> targetList)
|
||||||
{
|
{
|
||||||
if (targetList.Count <= 0) return;
|
if (targetList.Count <= 0) return;
|
||||||
|
|
||||||
@ -350,6 +413,12 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
var myPos = transform.position;
|
var myPos = transform.position;
|
||||||
var targetTransform = (Transform)(object)t;
|
var targetTransform = (Transform)(object)t;
|
||||||
|
|
||||||
|
if (!targetTransform)
|
||||||
|
{
|
||||||
|
return float.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
var targetCollider = targetTransform.GetComponent<Collider>();
|
var targetCollider = targetTransform.GetComponent<Collider>();
|
||||||
|
|
||||||
if (!targetCollider)
|
if (!targetCollider)
|
||||||
@ -365,10 +434,10 @@ namespace BlueWaterProject
|
|||||||
if (nearestTarget == null) return;
|
if (nearestTarget == null) return;
|
||||||
|
|
||||||
TargetTransform = (Transform)(object)nearestTarget;
|
TargetTransform = (Transform)(object)nearestTarget;
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
//Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetNearestTargetInDefense(Vector3 centerPos, float range)
|
public virtual void SetNearestTargetInDefense(Vector3 centerPos, float range)
|
||||||
{
|
{
|
||||||
Array.Clear(ColliderWithinRange, 0, TARGET_MAX_SIZE);
|
Array.Clear(ColliderWithinRange, 0, TARGET_MAX_SIZE);
|
||||||
|
|
||||||
@ -429,15 +498,15 @@ namespace BlueWaterProject
|
|||||||
print("AiStat.DefenseType == NONE Error");
|
print("AiStat.DefenseType == NONE Error");
|
||||||
break;
|
break;
|
||||||
case EDefenseType.STRIKER:
|
case EDefenseType.STRIKER:
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
Utils.SetCloseDestination(navMeshAgent, attackPos, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
break;
|
break;
|
||||||
case EDefenseType.MIDFIELDER:
|
case EDefenseType.MIDFIELDER:
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
Utils.SetCloseDestination(navMeshAgent, attackPos, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
break;
|
break;
|
||||||
case EDefenseType.DEFENDER:
|
case EDefenseType.DEFENDER:
|
||||||
if (Vector3.Distance(transform.position, attackPos) <= AiStat.DefenseRange)
|
if (Vector3.Distance(defensePos, attackPos) <= AiStat.DefenseRange)
|
||||||
{
|
{
|
||||||
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
Utils.SetCloseDestination(navMeshAgent, attackPos, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EDefenseType.KEEPER:
|
case EDefenseType.KEEPER:
|
||||||
@ -518,58 +587,55 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void InitStart()
|
private void InitStart()
|
||||||
{
|
{
|
||||||
InitViewModel();
|
var getAiViewData = GetAiViewData(false);
|
||||||
|
|
||||||
|
InitViewModel(false);
|
||||||
FindMaterial();
|
FindMaterial();
|
||||||
SetLayer();
|
SetLayer();
|
||||||
|
SetCloseWeapon(getAiViewData);
|
||||||
SetCurrentHp(AiStat.MaxHp);
|
SetCurrentHp(AiStat.MaxHp);
|
||||||
SetMoveSpeed(AiStat.MoveSpd);
|
SetMoveSpeed(AiStat.MoveSpd);
|
||||||
|
|
||||||
defensePos = transform.position;
|
defensePos = transform.position;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void InitViewModel()
|
private void InitViewModel(bool isEditor)
|
||||||
{
|
{
|
||||||
SetActiveViewModel(backpackContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).Backpack);
|
var getAiViewData = GetAiViewData(isEditor);
|
||||||
SetActiveViewModel(leftWeaponContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).LeftWeapon);
|
|
||||||
SetActiveViewModel(leftShieldContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).LeftShield);
|
|
||||||
SetActiveViewModel(headContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).Head);
|
|
||||||
SetActiveViewModel(rightWeaponContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).RightWeapon);
|
|
||||||
SetActiveViewModel(bodyContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).Body);
|
|
||||||
SetActiveViewModel(flagContainer, DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).Flag);
|
|
||||||
|
|
||||||
if (DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).RightWeapon == -1) return;
|
SetActiveViewModel(backpackContainer, getAiViewData(AiStat.ViewIdx).Backpack);
|
||||||
|
SetActiveViewModel(leftWeaponContainer, getAiViewData(AiStat.ViewIdx).LeftWeapon);
|
||||||
closeWeapon = rightWeaponContainer.GetChild(DataManager.Inst.GetAiViewDictionaryKey(AiStat.ViewIdx).RightWeapon).AddComponent<CloseWeapon>();
|
SetActiveViewModel(leftShieldContainer, getAiViewData(AiStat.ViewIdx).LeftShield);
|
||||||
closeWeapon.gameObject.layer = LayerMask.NameToLayer("Weapon");
|
SetActiveViewModel(headContainer, getAiViewData(AiStat.ViewIdx).Head);
|
||||||
closeWeapon.SetAttackerType(AiStat.AttackerType);
|
SetActiveViewModel(rightWeaponContainer, getAiViewData(AiStat.ViewIdx).RightWeapon);
|
||||||
|
SetActiveViewModel(bodyContainer, getAiViewData(AiStat.ViewIdx).Body);
|
||||||
|
SetActiveViewModel(flagContainer, getAiViewData(AiStat.ViewIdx).Flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void SetCloseWeapon(GetAiViewDataDelegate getAiViewData)
|
||||||
|
{
|
||||||
|
if (getAiViewData(AiStat.ViewIdx).RightWeapon == -1) return;
|
||||||
|
|
||||||
|
closeWeapon = rightWeaponContainer.GetChild(getAiViewData(AiStat.ViewIdx).RightWeapon).AddComponent<CloseWeapon>();
|
||||||
|
closeWeapon.gameObject.layer = LayerMask.NameToLayer("Weapon");
|
||||||
|
closeWeapon.SetAttackerAiType(AiStat.AiType);
|
||||||
|
closeWeapon.SetBoxCollider();
|
||||||
|
}
|
||||||
|
|
||||||
|
private GetAiViewDataDelegate GetAiViewData(bool isEditor) => isEditor ? DataManager.Inst.GetAiViewSoKey : DataManager.Inst.GetAiViewDictionaryKey;
|
||||||
|
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
public void InitStartInEditor()
|
public void InitStartInEditor()
|
||||||
{
|
{
|
||||||
|
var getAiViewData = GetAiViewData(true);
|
||||||
|
|
||||||
InitComponent();
|
InitComponent();
|
||||||
InitViewModelInEditor();
|
InitViewModel(true);
|
||||||
SetLayer();
|
SetLayer();
|
||||||
|
SetCloseWeapon(getAiViewData);
|
||||||
SetCurrentHp(AiStat.MaxHp);
|
SetCurrentHp(AiStat.MaxHp);
|
||||||
SetMoveSpeed(AiStat.MoveSpd);
|
SetMoveSpeed(AiStat.MoveSpd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitViewModelInEditor()
|
|
||||||
{
|
|
||||||
SetActiveViewModel(backpackContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Backpack);
|
|
||||||
SetActiveViewModel(leftWeaponContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).LeftWeapon);
|
|
||||||
SetActiveViewModel(leftShieldContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).LeftShield);
|
|
||||||
SetActiveViewModel(headContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Head);
|
|
||||||
SetActiveViewModel(rightWeaponContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon);
|
|
||||||
SetActiveViewModel(bodyContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Body);
|
|
||||||
SetActiveViewModel(flagContainer, DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).Flag);
|
|
||||||
|
|
||||||
if (DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon == -1) return;
|
|
||||||
|
|
||||||
closeWeapon = rightWeaponContainer.GetChild(DataManager.Inst.GetAiViewSoKey(AiStat.ViewIdx).RightWeapon).AddComponent<CloseWeapon>();
|
|
||||||
closeWeapon.gameObject.layer = LayerMask.NameToLayer("Weapon");
|
|
||||||
closeWeapon.SetAttackerType(AiStat.AttackerType);
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
public void ExecuteFindTarget()
|
public void ExecuteFindTarget()
|
||||||
@ -616,12 +682,10 @@ namespace BlueWaterProject
|
|||||||
{
|
{
|
||||||
if (!CanAttack())
|
if (!CanAttack())
|
||||||
{
|
{
|
||||||
isAttacking = false;
|
|
||||||
yield return FindTargetWaitTime;
|
yield return FindTargetWaitTime;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
isAttacking = true;
|
|
||||||
closeWeapon.SetIsAttacked(false);
|
closeWeapon.SetIsAttacked(false);
|
||||||
closeWeapon.SetAttackerStat(AiStat);
|
closeWeapon.SetAttackerStat(AiStat);
|
||||||
aiAnimator.SetTrigger(AttackHash);
|
aiAnimator.SetTrigger(AttackHash);
|
||||||
@ -656,14 +720,7 @@ namespace BlueWaterProject
|
|||||||
var targetInAttackRange = Vector3.Distance(transform.position, TargetTransform.position) <=
|
var targetInAttackRange = Vector3.Distance(transform.position, TargetTransform.position) <=
|
||||||
AiStat.AtkRange;
|
AiStat.AtkRange;
|
||||||
|
|
||||||
if (targetInAttackRange)
|
return targetInAttackRange;
|
||||||
{
|
|
||||||
SetAgentIsStopped(true);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
SetAgentIsStopped(false);
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void FindMaterial()
|
private void FindMaterial()
|
||||||
@ -718,19 +775,19 @@ namespace BlueWaterProject
|
|||||||
break;
|
break;
|
||||||
case EAiType.PLAYER:
|
case EAiType.PLAYER:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Player");
|
gameObject.layer = LayerMask.NameToLayer("Player");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Player");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Player";
|
hitBoxCollider.gameObject.tag = "Player";
|
||||||
TargetLayer = LayerMask.GetMask("Enemy");
|
TargetLayer = LayerMask.GetMask("Enemy");
|
||||||
break;
|
break;
|
||||||
case EAiType.PIRATE:
|
case EAiType.PIRATE:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Pirate");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Pirate";
|
hitBoxCollider.gameObject.tag = "Pirate";
|
||||||
TargetLayer = LayerMask.GetMask("Enemy");
|
TargetLayer = LayerMask.GetMask("Enemy");
|
||||||
break;
|
break;
|
||||||
case EAiType.ENEMY:
|
case EAiType.ENEMY:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Enemy");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Enemy";
|
hitBoxCollider.gameObject.tag = "Enemy";
|
||||||
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||||
break;
|
break;
|
||||||
@ -748,6 +805,7 @@ namespace BlueWaterProject
|
|||||||
public void SetAttackerType(EAttackerType type) => AiStat.AttackerType = type;
|
public void SetAttackerType(EAttackerType type) => AiStat.AttackerType = type;
|
||||||
public void SetOffenseType(EOffenseType type) => AiStat.OffenseType = type;
|
public void SetOffenseType(EOffenseType type) => AiStat.OffenseType = type;
|
||||||
public void SetDefenseType(EDefenseType type) => AiStat.DefenseType = type;
|
public void SetDefenseType(EDefenseType type) => AiStat.DefenseType = type;
|
||||||
|
public void SetCloseWeaponCanAttack(int boolValue) => closeWeapon.SetCanAttack(boolValue == 1);
|
||||||
public void ResetHighlight() => SetOutlineColor(defaultSkinColor);
|
public void ResetHighlight() => SetOutlineColor(defaultSkinColor);
|
||||||
public void MouseEnterHighlight() => SetOutlineColor(mouseEnterHighlightSkinColor);
|
public void MouseEnterHighlight() => SetOutlineColor(mouseEnterHighlightSkinColor);
|
||||||
public void SelectedHighlight() => SetOutlineColor(selectedSkinColor);
|
public void SelectedHighlight() => SetOutlineColor(selectedSkinColor);
|
||||||
|
@ -83,7 +83,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
[field: Tooltip("화살이 타겟에 도달하는 오차 범위(부정확함)")]
|
[field: Tooltip("화살이 타겟에 도달하는 오차 범위(부정확함)")]
|
||||||
[field: ShowIf("@UsingBow == true")]
|
[field: ShowIf("@UsingBow == true")]
|
||||||
[field: Range(0, 2f)]
|
[field: Range(0, 5f)]
|
||||||
[field: SerializeField] public float Inaccuracy { get; set; }
|
[field: SerializeField] public float Inaccuracy { get; set; }
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections;
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Pool;
|
using UnityEngine.Pool;
|
||||||
|
|
||||||
@ -23,7 +25,7 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private IObjectPool<Arrow> arrowPool;
|
private IObjectPool<Arrow> arrowPool;
|
||||||
|
|
||||||
[SerializeField] private Vector3 rayOffset = new(0f, 0.7f, 0);
|
[SerializeField] private Vector3 rayOffset = new(0f, 2f, 0);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -80,7 +82,7 @@ namespace BlueWaterProject
|
|||||||
break;
|
break;
|
||||||
case EAiType.PLAYER:
|
case EAiType.PLAYER:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Player");
|
gameObject.layer = LayerMask.NameToLayer("Player");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Player");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Player";
|
hitBoxCollider.gameObject.tag = "Player";
|
||||||
TargetLayer = LayerMask.GetMask("Enemy");
|
TargetLayer = LayerMask.GetMask("Enemy");
|
||||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||||
@ -88,7 +90,7 @@ namespace BlueWaterProject
|
|||||||
break;
|
break;
|
||||||
case EAiType.PIRATE:
|
case EAiType.PIRATE:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Pirate");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Pirate";
|
hitBoxCollider.gameObject.tag = "Pirate";
|
||||||
TargetLayer = LayerMask.GetMask("Enemy");
|
TargetLayer = LayerMask.GetMask("Enemy");
|
||||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||||
@ -96,7 +98,7 @@ namespace BlueWaterProject
|
|||||||
break;
|
break;
|
||||||
case EAiType.ENEMY:
|
case EAiType.ENEMY:
|
||||||
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("Enemy");
|
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||||
hitBoxCollider.gameObject.tag = "Enemy";
|
hitBoxCollider.gameObject.tag = "Enemy";
|
||||||
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||||
@ -133,20 +135,92 @@ namespace BlueWaterProject
|
|||||||
StartCoroutine(nameof(ShootArrowAnimation));
|
StartCoroutine(nameof(ShootArrowAnimation));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool CanAttack()
|
public override void SetNearestTargetInOffense<T>(List<T> targetList)
|
||||||
{
|
{
|
||||||
if (!TargetTransform) return false;
|
if (targetList.Count <= 0) return;
|
||||||
|
|
||||||
|
var nearestTarget = targetList.OrderBy(t =>
|
||||||
|
{
|
||||||
|
var myPos = transform.position;
|
||||||
|
var targetTransform = (Transform)(object)t;
|
||||||
|
|
||||||
|
if (!targetTransform)
|
||||||
|
{
|
||||||
|
return float.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var targetCollider = targetTransform.GetComponent<Collider>();
|
||||||
|
|
||||||
|
if (!targetCollider || !IsRaycastHitTarget(targetTransform))
|
||||||
|
{
|
||||||
|
return float.MaxValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var closestPoint = targetCollider.ClosestPoint(myPos);
|
||||||
|
return Vector3.Distance(myPos, closestPoint);
|
||||||
|
})
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
if (nearestTarget == null) return;
|
||||||
|
|
||||||
|
TargetTransform = (Transform)(object)nearestTarget;
|
||||||
|
|
||||||
|
if (!TargetTransform || !navMeshAgent.enabled) return;
|
||||||
|
Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void SetNearestTargetInDefense(Vector3 centerPos, float range)
|
||||||
|
{
|
||||||
|
Array.Clear(ColliderWithinRange, 0, TARGET_MAX_SIZE);
|
||||||
|
|
||||||
|
var maxColliderCount = Physics.OverlapSphereNonAlloc(centerPos, range, ColliderWithinRange,
|
||||||
|
TargetLayer, QueryTriggerInteraction.Collide);
|
||||||
|
|
||||||
|
if (maxColliderCount <= 0)
|
||||||
|
{
|
||||||
|
TargetTransform = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var nearestDistance = Mathf.Infinity;
|
||||||
|
Transform nearestTargetTransform = null;
|
||||||
|
|
||||||
|
for (var i = 0; i < maxColliderCount; i++)
|
||||||
|
{
|
||||||
|
var distanceToTarget = Vector3.Distance(transform.position, ColliderWithinRange[i].transform.position);
|
||||||
|
|
||||||
|
if (!IsRaycastHitTarget(ColliderWithinRange[i].transform) || distanceToTarget >= nearestDistance) continue;
|
||||||
|
|
||||||
|
nearestDistance = distanceToTarget;
|
||||||
|
nearestTargetTransform = ColliderWithinRange[i].transform;
|
||||||
|
}
|
||||||
|
|
||||||
|
TargetTransform = nearestTargetTransform;
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool IsRaycastHitTarget(Transform targetTransform)
|
||||||
|
{
|
||||||
var myPos = transform.position;
|
var myPos = transform.position;
|
||||||
var targetPos = TargetTransform.position;
|
var direction = ((targetTransform.position + rayOffset) - (myPos + rayOffset)).normalized;
|
||||||
var direction = ((targetPos + rayOffset) - (myPos + rayOffset)).normalized;
|
|
||||||
|
|
||||||
var targetInAttackRange = Vector3.Distance(myPos, targetPos) <= AiStat.AtkRange;
|
|
||||||
var raycastHitTarget = Physics.Raycast(myPos + rayOffset, direction, out var hit, AiStat.AtkRange, archerLayer, QueryTriggerInteraction.Collide);
|
var raycastHitTarget = Physics.Raycast(myPos + rayOffset, direction, out var hit, AiStat.AtkRange, archerLayer, QueryTriggerInteraction.Collide);
|
||||||
|
|
||||||
return targetInAttackRange && raycastHitTarget;
|
return raycastHitTarget && targetTransform == hit.transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// protected override bool CanAttack()
|
||||||
|
// {
|
||||||
|
// if (!TargetTransform) return false;
|
||||||
|
//
|
||||||
|
// var myPos = transform.position;
|
||||||
|
// var targetPos = TargetTransform.position;
|
||||||
|
// var direction = ((targetPos + rayOffset) - (myPos + rayOffset)).normalized;
|
||||||
|
//
|
||||||
|
// var targetInAttackRange = Vector3.Distance(myPos, targetPos) <= AiStat.AtkRange;
|
||||||
|
// var raycastHitTarget = Physics.Raycast(myPos + rayOffset, direction, out var hit, AiStat.AtkRange, archerLayer, QueryTriggerInteraction.Collide);
|
||||||
|
//
|
||||||
|
// return targetInAttackRange && raycastHitTarget;
|
||||||
|
// }
|
||||||
|
|
||||||
private IEnumerator ShootArrowAnimation()
|
private IEnumerator ShootArrowAnimation()
|
||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
@ -175,8 +249,11 @@ namespace BlueWaterProject
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnShootArrow()
|
public void OnShootArrow()
|
||||||
{
|
{
|
||||||
|
if (!TargetTransform) return;
|
||||||
|
|
||||||
var arrow = arrowPool.Get();
|
var arrow = arrowPool.Get();
|
||||||
var isOffense = AiStat.AttackerType == EAttackerType.OFFENSE;
|
var isOffense = AiStat.AttackerType == EAttackerType.OFFENSE;
|
||||||
|
|
||||||
arrow.SetShootingArrow(leftWeaponContainer.position, transform.position,
|
arrow.SetShootingArrow(leftWeaponContainer.position, transform.position,
|
||||||
TargetTransform.position + rayOffset, AiStat, AiStat.AiType, AiStat.Inaccuracy, isOffense);
|
TargetTransform.position + rayOffset, AiStat, AiStat.AiType, AiStat.Inaccuracy, isOffense);
|
||||||
arrow.ShootArrowCoroutine();
|
arrow.ShootArrowCoroutine();
|
||||||
@ -187,6 +264,8 @@ namespace BlueWaterProject
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public void OnStoppedMove(int boolValue)
|
public void OnStoppedMove(int boolValue)
|
||||||
{
|
{
|
||||||
|
if (!navMeshAgent.enabled) return;
|
||||||
|
|
||||||
navMeshAgent.isStopped = boolValue == 1;
|
navMeshAgent.isStopped = boolValue == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,20 +98,6 @@ namespace BlueWaterProject
|
|||||||
return UnitManager.Inst.CanAssignUnit(this, transform.position);
|
return UnitManager.Inst.CanAssignUnit(this, transform.position);
|
||||||
}
|
}
|
||||||
|
|
||||||
[PropertyOrder(2)]
|
|
||||||
[Button("테스트 배치")]
|
|
||||||
public void SetAssignUnit(Vector3 assignPos)
|
|
||||||
{
|
|
||||||
if (UnitManager.Inst.CanAssignUnit(this, assignPos))
|
|
||||||
{
|
|
||||||
UnitManager.Inst.AssignUnit(this, assignPos, false);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
print("병력이 땅과 맞닿아 있지 않아 배치할 수 없는 위치입니다.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[PropertyOrder(-7)]
|
[PropertyOrder(-7)]
|
||||||
[GUIColor(1, 0, 0)]
|
[GUIColor(1, 0, 0)]
|
||||||
[Button("유닛 초기화")]
|
[Button("유닛 초기화")]
|
||||||
|
@ -34,7 +34,7 @@ MonoBehaviour:
|
|||||||
<UsingShield>k__BackingField: 0
|
<UsingShield>k__BackingField: 0
|
||||||
<PenetrationResistivity>k__BackingField: 0
|
<PenetrationResistivity>k__BackingField: 0
|
||||||
<UsingBow>k__BackingField: 1
|
<UsingBow>k__BackingField: 1
|
||||||
<Inaccuracy>k__BackingField: 1
|
<Inaccuracy>k__BackingField: 4
|
||||||
- <Idx>k__BackingField: ai_stat_sailor_e_002
|
- <Idx>k__BackingField: ai_stat_sailor_e_002
|
||||||
<ViewIdx>k__BackingField: ai_view_sailor_e_002
|
<ViewIdx>k__BackingField: ai_view_sailor_e_002
|
||||||
<UnitType>k__BackingField: 1
|
<UnitType>k__BackingField: 1
|
||||||
@ -49,7 +49,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 4.5
|
<MoveSpd>k__BackingField: 4.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 10
|
<DefenseRange>k__BackingField: 10
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -71,7 +71,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5.5
|
<MoveSpd>k__BackingField: 5.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 20
|
<AvoidanceRate>k__BackingField: 20
|
||||||
@ -93,7 +93,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -115,7 +115,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 6
|
<MoveSpd>k__BackingField: 6
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 30
|
<AvoidanceRate>k__BackingField: 30
|
||||||
@ -144,7 +144,7 @@ MonoBehaviour:
|
|||||||
<UsingShield>k__BackingField: 0
|
<UsingShield>k__BackingField: 0
|
||||||
<PenetrationResistivity>k__BackingField: 0
|
<PenetrationResistivity>k__BackingField: 0
|
||||||
<UsingBow>k__BackingField: 1
|
<UsingBow>k__BackingField: 1
|
||||||
<Inaccuracy>k__BackingField: 1
|
<Inaccuracy>k__BackingField: 4
|
||||||
- <Idx>k__BackingField: ai_stat_sailor_p_002
|
- <Idx>k__BackingField: ai_stat_sailor_p_002
|
||||||
<ViewIdx>k__BackingField: ai_view_sailor_p_002
|
<ViewIdx>k__BackingField: ai_view_sailor_p_002
|
||||||
<UnitType>k__BackingField: 6
|
<UnitType>k__BackingField: 6
|
||||||
@ -159,7 +159,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 2.5
|
<AtkCooldown>k__BackingField: 2.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 100
|
<ShieldPenetrationRate>k__BackingField: 100
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -181,7 +181,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5.5
|
<MoveSpd>k__BackingField: 5.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 20
|
<AvoidanceRate>k__BackingField: 20
|
||||||
@ -203,7 +203,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -225,7 +225,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 6
|
<MoveSpd>k__BackingField: 6
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 30
|
<AvoidanceRate>k__BackingField: 30
|
||||||
@ -254,7 +254,7 @@ MonoBehaviour:
|
|||||||
<UsingShield>k__BackingField: 0
|
<UsingShield>k__BackingField: 0
|
||||||
<PenetrationResistivity>k__BackingField: 0
|
<PenetrationResistivity>k__BackingField: 0
|
||||||
<UsingBow>k__BackingField: 1
|
<UsingBow>k__BackingField: 1
|
||||||
<Inaccuracy>k__BackingField: 1
|
<Inaccuracy>k__BackingField: 4
|
||||||
- <Idx>k__BackingField: ai_stat_captain_e_002
|
- <Idx>k__BackingField: ai_stat_captain_e_002
|
||||||
<ViewIdx>k__BackingField: ai_view_captain_e_002
|
<ViewIdx>k__BackingField: ai_view_captain_e_002
|
||||||
<UnitType>k__BackingField: 1
|
<UnitType>k__BackingField: 1
|
||||||
@ -269,7 +269,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 4.5
|
<MoveSpd>k__BackingField: 4.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 10
|
<DefenseRange>k__BackingField: 10
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -291,7 +291,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5.5
|
<MoveSpd>k__BackingField: 5.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 20
|
<AvoidanceRate>k__BackingField: 20
|
||||||
@ -313,7 +313,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -335,7 +335,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 6
|
<MoveSpd>k__BackingField: 6
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 30
|
<AvoidanceRate>k__BackingField: 30
|
||||||
@ -364,7 +364,7 @@ MonoBehaviour:
|
|||||||
<UsingShield>k__BackingField: 0
|
<UsingShield>k__BackingField: 0
|
||||||
<PenetrationResistivity>k__BackingField: 0
|
<PenetrationResistivity>k__BackingField: 0
|
||||||
<UsingBow>k__BackingField: 1
|
<UsingBow>k__BackingField: 1
|
||||||
<Inaccuracy>k__BackingField: 1
|
<Inaccuracy>k__BackingField: 4
|
||||||
- <Idx>k__BackingField: ai_stat_captain_p_002
|
- <Idx>k__BackingField: ai_stat_captain_p_002
|
||||||
<ViewIdx>k__BackingField: ai_view_captain_p_002
|
<ViewIdx>k__BackingField: ai_view_captain_p_002
|
||||||
<UnitType>k__BackingField: 6
|
<UnitType>k__BackingField: 6
|
||||||
@ -379,7 +379,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 2.5
|
<AtkCooldown>k__BackingField: 2.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 100
|
<ShieldPenetrationRate>k__BackingField: 100
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -401,7 +401,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5.5
|
<MoveSpd>k__BackingField: 5.5
|
||||||
<AtkCooldown>k__BackingField: 2
|
<AtkCooldown>k__BackingField: 2
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 2
|
<AtkRange>k__BackingField: 3.5
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 75
|
<ShieldPenetrationRate>k__BackingField: 75
|
||||||
<AvoidanceRate>k__BackingField: 20
|
<AvoidanceRate>k__BackingField: 20
|
||||||
@ -423,7 +423,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 5
|
<MoveSpd>k__BackingField: 5
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 10
|
<ViewRange>k__BackingField: 10
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 10
|
<AvoidanceRate>k__BackingField: 10
|
||||||
@ -445,7 +445,7 @@ MonoBehaviour:
|
|||||||
<MoveSpd>k__BackingField: 6
|
<MoveSpd>k__BackingField: 6
|
||||||
<AtkCooldown>k__BackingField: 1.5
|
<AtkCooldown>k__BackingField: 1.5
|
||||||
<ViewRange>k__BackingField: 15
|
<ViewRange>k__BackingField: 15
|
||||||
<AtkRange>k__BackingField: 1.5
|
<AtkRange>k__BackingField: 3
|
||||||
<DefenseRange>k__BackingField: 0
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 50
|
<ShieldPenetrationRate>k__BackingField: 50
|
||||||
<AvoidanceRate>k__BackingField: 30
|
<AvoidanceRate>k__BackingField: 30
|
||||||
|
@ -33,3 +33,13 @@ MonoBehaviour:
|
|||||||
<OffenseType>k__BackingField: -1
|
<OffenseType>k__BackingField: -1
|
||||||
<DefenseType>k__BackingField: 2
|
<DefenseType>k__BackingField: 2
|
||||||
<UnitList>k__BackingField: []
|
<UnitList>k__BackingField: []
|
||||||
|
- <Idx>k__BackingField: unit_swordman_e_001
|
||||||
|
<CaptainStatIdx>k__BackingField: ai_stat_captain_e_005
|
||||||
|
<SailorStatIdx>k__BackingField: ai_stat_sailor_e_005
|
||||||
|
<UnitName>k__BackingField: EnemySwordMan001
|
||||||
|
<UnitType>k__BackingField: -1
|
||||||
|
<SailorCount>k__BackingField: 8
|
||||||
|
<AttackerType>k__BackingField: 1
|
||||||
|
<OffenseType>k__BackingField: -1
|
||||||
|
<DefenseType>k__BackingField: 0
|
||||||
|
<UnitList>k__BackingField: []
|
||||||
|
@ -10,8 +10,10 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private bool isAttacked;
|
private bool isAttacked;
|
||||||
|
|
||||||
private EAttackerType eAttackerType;
|
private EAiType attackerAiType;
|
||||||
private AiStat attackerStat;
|
private AiStat attackerStat;
|
||||||
|
private bool isInit;
|
||||||
|
private bool canAttack;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
@ -19,26 +21,28 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
private void OnTriggerEnter(Collider other)
|
private void OnTriggerEnter(Collider other)
|
||||||
{
|
{
|
||||||
if (isAttacked) return;
|
if (!isInit || !canAttack || isAttacked) return;
|
||||||
|
|
||||||
if (other.gameObject.layer == LayerMask.NameToLayer("HitBox"))
|
if (other.gameObject.layer == LayerMask.NameToLayer("HitBox"))
|
||||||
{
|
{
|
||||||
switch (eAttackerType)
|
switch (attackerAiType)
|
||||||
{
|
{
|
||||||
case EAttackerType.NONE:
|
case EAiType.NONE:
|
||||||
|
print("attackerAiType == NONE Error");
|
||||||
break;
|
break;
|
||||||
case EAttackerType.OFFENSE:
|
case EAiType.PLAYER:
|
||||||
if (!other.gameObject.CompareTag("Enemy") && !other.gameObject.CompareTag("House"))
|
case EAiType.PIRATE:
|
||||||
|
if (other.gameObject.CompareTag("Enemy"))
|
||||||
{
|
{
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
return;
|
||||||
case EAttackerType.DEFENSE:
|
case EAiType.ENEMY:
|
||||||
if (!other.gameObject.CompareTag("Player") && !other.gameObject.CompareTag("Pirate"))
|
if (other.gameObject.CompareTag("Pirate") || other.gameObject.CompareTag("Player"))
|
||||||
{
|
{
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
return;
|
||||||
default:
|
default:
|
||||||
throw new ArgumentOutOfRangeException();
|
throw new ArgumentOutOfRangeException();
|
||||||
}
|
}
|
||||||
@ -55,9 +59,25 @@ namespace BlueWaterProject
|
|||||||
|
|
||||||
#region Custom function
|
#region Custom function
|
||||||
|
|
||||||
|
public void SetBoxCollider()
|
||||||
|
{
|
||||||
|
var col = GetComponent<Collider>();
|
||||||
|
if (col)
|
||||||
|
{
|
||||||
|
col.isTrigger = true;
|
||||||
|
isInit = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var boxCollider = gameObject.AddComponent<BoxCollider>();
|
||||||
|
boxCollider.isTrigger = true;
|
||||||
|
isInit = true;
|
||||||
|
}
|
||||||
|
|
||||||
public void SetIsAttacked(bool value) => isAttacked = value;
|
public void SetIsAttacked(bool value) => isAttacked = value;
|
||||||
public void SetAttackerType(EAttackerType value) => eAttackerType = value;
|
public void SetAttackerAiType(EAiType value) => attackerAiType = value;
|
||||||
public void SetAttackerStat(AiStat value) => attackerStat = value;
|
public void SetAttackerStat(AiStat value) => attackerStat = value;
|
||||||
|
public void SetCanAttack(bool value) => canAttack = value;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
@ -8899,19 +8899,19 @@ NavMeshAgent:
|
|||||||
m_GameObject: {fileID: 155132}
|
m_GameObject: {fileID: 155132}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_AgentTypeID: 0
|
m_AgentTypeID: 0
|
||||||
m_Radius: 0.4
|
m_Radius: 0.5
|
||||||
m_Speed: 3
|
m_Speed: 3
|
||||||
m_Acceleration: 40
|
m_Acceleration: 20
|
||||||
avoidancePriority: 50
|
avoidancePriority: 50
|
||||||
m_AngularSpeed: 180
|
m_AngularSpeed: 180
|
||||||
m_StoppingDistance: 3
|
m_StoppingDistance: 3
|
||||||
m_AutoTraverseOffMeshLink: 1
|
m_AutoTraverseOffMeshLink: 1
|
||||||
m_AutoBraking: 0
|
m_AutoBraking: 1
|
||||||
m_AutoRepath: 1
|
m_AutoRepath: 1
|
||||||
m_Height: 1.6
|
m_Height: 1.6
|
||||||
m_BaseOffset: 0
|
m_BaseOffset: 0
|
||||||
m_WalkableMask: 1
|
m_WalkableMask: 33
|
||||||
m_ObstacleAvoidanceType: 1
|
m_ObstacleAvoidanceType: 4
|
||||||
--- !u!54 &8419222071034356516
|
--- !u!54 &8419222071034356516
|
||||||
Rigidbody:
|
Rigidbody:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
@ -8975,32 +8975,38 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: d17ac59ab4fe31846b058c6e1ca1cbb8, type: 3}
|
m_Script: {fileID: 11500000, guid: d17ac59ab4fe31846b058c6e1ca1cbb8, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
attackerType: 0
|
|
||||||
offenseType: 0
|
|
||||||
defenseType: 0
|
|
||||||
skinMaterialList: []
|
skinMaterialList: []
|
||||||
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
|
defaultSkinColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
|
mouseEnterHighlightSkinColor: {r: 1, g: 1, b: 1, a: 1}
|
||||||
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
|
selectedSkinColor: {r: 0, g: 0, b: 1, a: 1}
|
||||||
|
islandInfo: {fileID: 0}
|
||||||
<AiStat>k__BackingField:
|
<AiStat>k__BackingField:
|
||||||
<Idx>k__BackingField:
|
<Idx>k__BackingField:
|
||||||
<ViewIdx>k__BackingField:
|
<ViewIdx>k__BackingField:
|
||||||
|
<UnitType>k__BackingField: -1
|
||||||
|
<AiType>k__BackingField: -1
|
||||||
|
<AttackerType>k__BackingField: -1
|
||||||
|
<OffenseType>k__BackingField: -1
|
||||||
|
<DefenseType>k__BackingField: -1
|
||||||
<MaxHp>k__BackingField: 0
|
<MaxHp>k__BackingField: 0
|
||||||
<CurrentHp>k__BackingField: 0
|
<CurrentHp>k__BackingField: 0
|
||||||
<Atk>k__BackingField: 0
|
<Atk>k__BackingField: 0
|
||||||
<Def>k__BackingField: 0
|
<Def>k__BackingField: 0
|
||||||
<MoveSpd>k__BackingField: 0
|
<MoveSpd>k__BackingField: 0
|
||||||
<AtkCooldown>k__BackingField: 0
|
<AtkCooldown>k__BackingField: 0
|
||||||
|
<ViewRange>k__BackingField: 0
|
||||||
<AtkRange>k__BackingField: 0
|
<AtkRange>k__BackingField: 0
|
||||||
|
<DefenseRange>k__BackingField: 0
|
||||||
<ShieldPenetrationRate>k__BackingField: 0
|
<ShieldPenetrationRate>k__BackingField: 0
|
||||||
<AvoidanceRate>k__BackingField: 0
|
<AvoidanceRate>k__BackingField: 0
|
||||||
<UsingShield>k__BackingField: 0
|
<UsingShield>k__BackingField: 0
|
||||||
<PenetrationResistivity>k__BackingField: 0
|
<PenetrationResistivity>k__BackingField: 0
|
||||||
|
<UsingBow>k__BackingField: 0
|
||||||
|
<Inaccuracy>k__BackingField: 0
|
||||||
<IsDrawGizmosInFieldOfView>k__BackingField: 1
|
<IsDrawGizmosInFieldOfView>k__BackingField: 1
|
||||||
<TargetLayer>k__BackingField:
|
<TargetLayer>k__BackingField:
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
m_Bits: 1024
|
m_Bits: 1024
|
||||||
<ViewRadius>k__BackingField: 3
|
|
||||||
<ColliderWithinRange>k__BackingField:
|
<ColliderWithinRange>k__BackingField:
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
@ -9033,8 +9039,6 @@ MonoBehaviour:
|
|||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
<TargetTransform>k__BackingField: {fileID: 0}
|
<TargetTransform>k__BackingField: {fileID: 0}
|
||||||
<AttackMoveType>k__BackingField: 2
|
|
||||||
<BeAttackedMoveType>k__BackingField: 2
|
|
||||||
<IsCommanded>k__BackingField: 0
|
<IsCommanded>k__BackingField: 0
|
||||||
--- !u!1 &156456
|
--- !u!1 &156456
|
||||||
GameObject:
|
GameObject:
|
||||||
|
@ -259,7 +259,7 @@ AnimatorState:
|
|||||||
m_MirrorParameterActive: 0
|
m_MirrorParameterActive: 0
|
||||||
m_CycleOffsetParameterActive: 0
|
m_CycleOffsetParameterActive: 0
|
||||||
m_TimeParameterActive: 0
|
m_TimeParameterActive: 0
|
||||||
m_Motion: {fileID: 7400000, guid: 5a7200e1c2b48164d856cdab807a71bb, type: 3}
|
m_Motion: {fileID: 7400000, guid: 3116e7e540a8c7a459c83af74f1be5e5, type: 2}
|
||||||
m_Tag:
|
m_Tag:
|
||||||
m_SpeedParameter:
|
m_SpeedParameter:
|
||||||
m_MirrorParameter:
|
m_MirrorParameter:
|
||||||
@ -333,7 +333,7 @@ AnimatorState:
|
|||||||
m_MirrorParameterActive: 0
|
m_MirrorParameterActive: 0
|
||||||
m_CycleOffsetParameterActive: 0
|
m_CycleOffsetParameterActive: 0
|
||||||
m_TimeParameterActive: 0
|
m_TimeParameterActive: 0
|
||||||
m_Motion: {fileID: 7400000, guid: e8b6ae497645a274e98d76a6e407ce8b, type: 3}
|
m_Motion: {fileID: 7400000, guid: 5efa22af53c1f5242b3fb26fb436e771, type: 2}
|
||||||
m_Tag:
|
m_Tag:
|
||||||
m_SpeedParameter:
|
m_SpeedParameter:
|
||||||
m_MirrorParameter:
|
m_MirrorParameter:
|
||||||
@ -381,43 +381,43 @@ AnimatorController:
|
|||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: AttackType
|
- m_Name: AttackType
|
||||||
m_Type: 3
|
m_Type: 3
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: DeathType
|
- m_Name: DeathType
|
||||||
m_Type: 3
|
m_Type: 3
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: Attack
|
- m_Name: Attack
|
||||||
m_Type: 9
|
m_Type: 9
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: TakeDamage
|
- m_Name: TakeDamage
|
||||||
m_Type: 9
|
m_Type: 9
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: Death
|
- m_Name: Death
|
||||||
m_Type: 9
|
m_Type: 9
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
- m_Name: Shield
|
- m_Name: Shield
|
||||||
m_Type: 9
|
m_Type: 9
|
||||||
m_DefaultFloat: 0
|
m_DefaultFloat: 0
|
||||||
m_DefaultInt: 0
|
m_DefaultInt: 0
|
||||||
m_DefaultBool: 0
|
m_DefaultBool: 0
|
||||||
m_Controller: {fileID: 0}
|
m_Controller: {fileID: 9100000}
|
||||||
m_AnimatorLayers:
|
m_AnimatorLayers:
|
||||||
- serializedVersion: 5
|
- serializedVersion: 5
|
||||||
m_Name: Base
|
m_Name: Base
|
||||||
|
@ -36544,6 +36544,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.33333334
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.53333336
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -36472,6 +36472,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.33333334
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.53333336
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
36225
BlueWater/Assets/07.Animation/shield_04_attack_A.anim
Normal file
36225
BlueWater/Assets/07.Animation/shield_04_attack_A.anim
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: a55ee4efaad27d948ba5f03fc6d7bc80
|
guid: 5efa22af53c1f5242b3fb26fb436e771
|
||||||
DefaultImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
37161
BlueWater/Assets/07.Animation/shield_attack_B.anim
Normal file
37161
BlueWater/Assets/07.Animation/shield_attack_B.anim
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,8 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: ed9b95dc6ed6d0647ad7f1a8f305385d
|
guid: 3116e7e540a8c7a459c83af74f1be5e5
|
||||||
DefaultImporter:
|
NativeFormatImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 7400000
|
||||||
userData:
|
userData:
|
||||||
assetBundleName:
|
assetBundleName:
|
||||||
assetBundleVariant:
|
assetBundleVariant:
|
@ -35080,6 +35080,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.33333334
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.7
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -35800,6 +35800,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.33333334
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.7
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -35356,6 +35356,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.3
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.6666667
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -36778,6 +36778,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.3
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.6666667
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -35332,6 +35332,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.26666668
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.6
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -40447,6 +40447,20 @@ AnimationClip:
|
|||||||
floatParameter: 0
|
floatParameter: 0
|
||||||
intParameter: 1
|
intParameter: 1
|
||||||
messageOptions: 0
|
messageOptions: 0
|
||||||
|
- time: 0.26666668
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 1
|
||||||
|
messageOptions: 0
|
||||||
|
- time: 0.6
|
||||||
|
functionName: SetCloseWeaponCanAttack
|
||||||
|
data:
|
||||||
|
objectReferenceParameter: {fileID: 0}
|
||||||
|
floatParameter: 0
|
||||||
|
intParameter: 0
|
||||||
|
messageOptions: 0
|
||||||
- time: 1.5
|
- time: 1.5
|
||||||
functionName: OnAttacking
|
functionName: OnAttacking
|
||||||
data:
|
data:
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3d7c4217783978e4abe6496ac71eee94
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
AssetOrigin:
|
|
||||||
serializedVersion: 1
|
|
||||||
productId: 57772
|
|
||||||
packageName: Epic Toon FX
|
|
||||||
packageVersion: 1.81
|
|
||||||
assetPath: Assets/Epic Toon FX/Upgrade/ETFX URP Upgrade (2020.3.45f1).unitypackage
|
|
||||||
uploadId: 567564
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 697b6e7dea1fde146b7e3e5cf3ed9e9f
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 078b8f13a17171b49892ad10426d5af0
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f9406a33814af9c47b352e77f079d798
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 9aacf6f3043624194bb6f6fe9a580786
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f4227764308e84f89a765fbf315e2945
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 41e59f562b69648719f2424c438758f3
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: b044a2387a61dac41bdf204adffdce9d
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: cd287c84e887ea24a8679e67aac7c074
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 5f3f53ee059b45a4d9a5b9fc75e8aea9
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f211254f5bfad224ba88868f2c75432c
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 4368c9be31b3c174dbfd80f2caf98889
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 617b3f1032a08c14ebfedfa340767cdf
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: f597f19f656ba56eae4f6a3a7cc528f4
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 48e08dc33330d11e9d4a1b246c52e4f6
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ed09910c0094cb27be8f3ca264680da3
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -1,7 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: cc355dd4cf1e6173beaeb22c2858cbe1
|
|
||||||
DefaultImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
@ -73,8 +73,8 @@ NavMeshProjectSettings:
|
|||||||
m_Settings:
|
m_Settings:
|
||||||
- serializedVersion: 3
|
- serializedVersion: 3
|
||||||
agentTypeID: 0
|
agentTypeID: 0
|
||||||
agentRadius: 0.5
|
agentRadius: 0.4
|
||||||
agentHeight: 2
|
agentHeight: 1.6
|
||||||
agentSlope: 45
|
agentSlope: 45
|
||||||
agentClimb: 0.75
|
agentClimb: 0.75
|
||||||
ledgeDropHeight: 0
|
ledgeDropHeight: 0
|
||||||
|
Loading…
Reference in New Issue
Block a user