Ai 전체 구조 변경 중
This commit is contained in:
parent
639ee838bc
commit
fd050c4f68
@ -178,32 +178,32 @@ namespace BlueWaterProject
|
||||
UpdateLookAtTarget();
|
||||
}
|
||||
|
||||
private void OnMouseEnter()
|
||||
{
|
||||
if (AiStat.AiType == EAiType.ENEMY) return;
|
||||
|
||||
mouseEnterUnitController = gameObject.GetComponentInParent<UnitController>();
|
||||
|
||||
if (mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
|
||||
foreach (var unit in mouseEnterUnitController.unit.UnitList)
|
||||
{
|
||||
unit.MouseEnterHighlight();
|
||||
}
|
||||
}
|
||||
|
||||
private void OnMouseExit()
|
||||
{
|
||||
if (AiStat.AiType == EAiType.ENEMY ||
|
||||
!mouseEnterUnitController || mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
|
||||
foreach (var unit in mouseEnterUnitController.unit.UnitList)
|
||||
{
|
||||
unit.ResetHighlight();
|
||||
}
|
||||
|
||||
mouseEnterUnitController = null;
|
||||
}
|
||||
// private void OnMouseEnter()
|
||||
// {
|
||||
// if (AiStat.AiType == EAiType.ENEMY) return;
|
||||
//
|
||||
// mouseEnterUnitController = gameObject.GetComponentInParent<UnitController>();
|
||||
//
|
||||
// if (mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
//
|
||||
// foreach (var unit in mouseEnterUnitController.unit.UnitList)
|
||||
// {
|
||||
// unit.MouseEnterHighlight();
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// private void OnMouseExit()
|
||||
// {
|
||||
// if (AiStat.AiType == EAiType.ENEMY ||
|
||||
// !mouseEnterUnitController || mouseEnterUnitController == unitSelection.SelectedUnitController) return;
|
||||
//
|
||||
// foreach (var unit in mouseEnterUnitController.unit.UnitList)
|
||||
// {
|
||||
// unit.ResetHighlight();
|
||||
// }
|
||||
//
|
||||
// mouseEnterUnitController = null;
|
||||
// }
|
||||
|
||||
#endregion
|
||||
|
||||
@ -607,7 +607,7 @@ namespace BlueWaterProject
|
||||
|
||||
closeWeapon = rightWeaponContainer.GetChild(getAiViewData(AiStat.ViewIdx).RightWeapon).AddComponent<CloseWeapon>();
|
||||
closeWeapon.gameObject.layer = LayerMask.NameToLayer("Weapon");
|
||||
closeWeapon.SetAttackerAiType(AiStat.AiType);
|
||||
//closeWeapon.SetAttackerAiType(AiStat.AiType);
|
||||
closeWeapon.SetBoxCollider();
|
||||
}
|
||||
|
||||
@ -749,37 +749,37 @@ namespace BlueWaterProject
|
||||
|
||||
protected virtual void SetLayer()
|
||||
{
|
||||
switch (AiStat.AiType)
|
||||
{
|
||||
case EAiType.NONE:
|
||||
print("AiStat.AiType == NONE Error");
|
||||
break;
|
||||
case EAiType.PLAYER:
|
||||
gameObject.layer = LayerMask.NameToLayer("Player");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Player";
|
||||
TargetLayer = LayerMask.GetMask("Enemy");
|
||||
break;
|
||||
case EAiType.PIRATE:
|
||||
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Pirate";
|
||||
TargetLayer = LayerMask.GetMask("Enemy");
|
||||
break;
|
||||
case EAiType.ENEMY:
|
||||
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Enemy";
|
||||
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
if (AiStat.AttackerType == EAttackerType.OFFENSE)
|
||||
{
|
||||
TargetLayer |= LayerMask.GetMask("Props");
|
||||
}
|
||||
// switch (AiStat.AiType)
|
||||
// {
|
||||
// case EAiType.NONE:
|
||||
// print("AiStat.AiType == NONE Error");
|
||||
// break;
|
||||
// case EAiType.PLAYER:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Player");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Player";
|
||||
// TargetLayer = LayerMask.GetMask("Enemy");
|
||||
// break;
|
||||
// case EAiType.PIRATE:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Pirate";
|
||||
// TargetLayer = LayerMask.GetMask("Enemy");
|
||||
// break;
|
||||
// case EAiType.ENEMY:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Enemy";
|
||||
// TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
// break;
|
||||
// default:
|
||||
// throw new ArgumentOutOfRangeException();
|
||||
// }
|
||||
//
|
||||
// if (AiStat.AttackerType == EAttackerType.OFFENSE)
|
||||
// {
|
||||
// TargetLayer |= LayerMask.GetMask("Props");
|
||||
// }
|
||||
}
|
||||
|
||||
public IslandInfo GetIslandInfo() => islandInfo;
|
||||
|
10
BlueWater/Assets/02.Scripts/Ai/BaseAi.cs
Normal file
10
BlueWater/Assets/02.Scripts/Ai/BaseAi.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class BaseAi : MonoBehaviour
|
||||
{
|
||||
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Ai/BaseAi.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/BaseAi.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a1c1a5b338eae1e40a84da3eba99b987
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/Ai/Human.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/Human.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 22754cea389b9fc49a6a943b90c2710a
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/Ai/Human/Enemy.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/Human/Enemy.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 76fb3986699b27a49b77bbe71fa5056d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
10
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs
Normal file
10
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemyAi : HumanAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9bc95105830b2294d9941f686fc2f0ba
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -6,7 +6,7 @@ using UnityEngine;
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[Serializable]
|
||||
public class AiStat : IIdx
|
||||
public class EnemyStat : IIdx
|
||||
{
|
||||
#region Property and variable
|
||||
|
||||
@ -19,10 +19,6 @@ namespace BlueWaterProject
|
||||
[field: Tooltip("Ai 종류")]
|
||||
[field: SerializeField] public GlobalValue.UnitType UnitType { get; set; }
|
||||
|
||||
[field: Tooltip("Ai 종류")]
|
||||
[field: EnumToggleButtons]
|
||||
[field: SerializeField] public EAiType AiType { get; set; }
|
||||
|
||||
[field: Tooltip("공격방식 종류")]
|
||||
[field: DisableIf("@true")]
|
||||
[field: SerializeField] public EAttackerType AttackerType { get; set; }
|
||||
@ -93,12 +89,11 @@ namespace BlueWaterProject
|
||||
/// <summary>
|
||||
/// 기본 생성자
|
||||
/// </summary>
|
||||
public AiStat()
|
||||
public EnemyStat()
|
||||
{
|
||||
Idx = null;
|
||||
ViewIdx = null;
|
||||
UnitType = GlobalValue.UnitType.NONE;
|
||||
AiType = EAiType.NONE;
|
||||
AttackerType = EAttackerType.NONE;
|
||||
OffenseType = EOffenseType.NONE;
|
||||
DefenseType = EDefenseType.NONE;
|
||||
@ -122,14 +117,13 @@ namespace BlueWaterProject
|
||||
/// <summary>
|
||||
/// 일반 생성자
|
||||
/// </summary>
|
||||
public AiStat(string idx, string viewIdx, GlobalValue.UnitType unitType, EAiType aiType, float maxHp, float currentHp, float atk, float def,
|
||||
public EnemyStat(string idx, string viewIdx, GlobalValue.UnitType unitType, float maxHp, float currentHp, float atk, float def,
|
||||
float moveSpd, float atkCooldown, float viewRange, float atkRange, float defenseRange, int shieldPenetrationRate, int avoidanceRate,
|
||||
bool usingShield, int penetrationResistivity, bool usingBow, float inaccuracy)
|
||||
{
|
||||
Idx = idx;
|
||||
ViewIdx = viewIdx;
|
||||
UnitType = unitType;
|
||||
AiType = aiType;
|
||||
MaxHp = maxHp;
|
||||
CurrentHp = currentHp;
|
||||
Atk = atk;
|
||||
@ -150,30 +144,29 @@ namespace BlueWaterProject
|
||||
/// <summary>
|
||||
/// 복사 생성자
|
||||
/// </summary>
|
||||
public AiStat(AiStat aiStat)
|
||||
public EnemyStat(EnemyStat enemyStat)
|
||||
{
|
||||
Idx = aiStat.Idx;
|
||||
ViewIdx = aiStat.ViewIdx;
|
||||
UnitType = aiStat.UnitType;
|
||||
AiType = aiStat.AiType;
|
||||
AttackerType = aiStat.AttackerType;
|
||||
OffenseType = aiStat.OffenseType;
|
||||
DefenseType = aiStat.DefenseType;
|
||||
MaxHp = aiStat.MaxHp;
|
||||
CurrentHp = aiStat.CurrentHp;
|
||||
Atk = aiStat.Atk;
|
||||
Def = aiStat.Def;
|
||||
MoveSpd = aiStat.MoveSpd;
|
||||
AtkCooldown = aiStat.AtkCooldown;
|
||||
ViewRange = aiStat.ViewRange;
|
||||
AtkRange = aiStat.AtkRange;
|
||||
DefenseRange = aiStat.DefenseRange;
|
||||
ShieldPenetrationRate = aiStat.ShieldPenetrationRate;
|
||||
AvoidanceRate = aiStat.AvoidanceRate;
|
||||
UsingShield = aiStat.UsingShield;
|
||||
PenetrationResistivity = aiStat.PenetrationResistivity;
|
||||
UsingBow = aiStat.UsingBow;
|
||||
Inaccuracy = aiStat.Inaccuracy;
|
||||
Idx = enemyStat.Idx;
|
||||
ViewIdx = enemyStat.ViewIdx;
|
||||
UnitType = enemyStat.UnitType;
|
||||
AttackerType = enemyStat.AttackerType;
|
||||
OffenseType = enemyStat.OffenseType;
|
||||
DefenseType = enemyStat.DefenseType;
|
||||
MaxHp = enemyStat.MaxHp;
|
||||
CurrentHp = enemyStat.CurrentHp;
|
||||
Atk = enemyStat.Atk;
|
||||
Def = enemyStat.Def;
|
||||
MoveSpd = enemyStat.MoveSpd;
|
||||
AtkCooldown = enemyStat.AtkCooldown;
|
||||
ViewRange = enemyStat.ViewRange;
|
||||
AtkRange = enemyStat.AtkRange;
|
||||
DefenseRange = enemyStat.DefenseRange;
|
||||
ShieldPenetrationRate = enemyStat.ShieldPenetrationRate;
|
||||
AvoidanceRate = enemyStat.AvoidanceRate;
|
||||
UsingShield = enemyStat.UsingShield;
|
||||
PenetrationResistivity = enemyStat.PenetrationResistivity;
|
||||
UsingBow = enemyStat.UsingBow;
|
||||
Inaccuracy = enemyStat.Inaccuracy;
|
||||
}
|
||||
|
||||
#endregion
|
11
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4c8366e51a915e1428ed891371635918
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bd54d1697b7a75545858c144d17671c0
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemyArcher : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3f93377933923904282d8a32d7b6dcd8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemySpearKnight : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3081b5da8eafc39478ee39b61bd01249
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemySpearman : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c14f537594d346b408093acb546136d8
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemySwordKnight : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 215148f883898b34a99799d0ad0236e5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class EnemySwordman : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3bf2b5b70d0f63e40b3dddbd22c90c84
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
112
BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs
Normal file
112
BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs
Normal file
@ -0,0 +1,112 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using UnityEngine.Animations;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class HumanAi : BaseAi
|
||||
{
|
||||
#region Properties and variables
|
||||
|
||||
// 모델링 관련 변수
|
||||
protected Transform backpackContainer;
|
||||
protected Transform leftWeaponContainer;
|
||||
protected Transform leftShieldContainer;
|
||||
protected Transform headContainer;
|
||||
protected Transform rightWeaponContainer;
|
||||
protected Transform bodyContainer;
|
||||
protected Transform flagContainer;
|
||||
|
||||
// 컴포넌트 관련 변수
|
||||
protected Animator humanAnimator;
|
||||
protected NavMeshAgent humanAgent;
|
||||
protected CapsuleCollider myCollider;
|
||||
protected CapsuleCollider hitBoxCollider;
|
||||
protected LookAtConstraint lookAtConstraint;
|
||||
|
||||
// 애니메이션 관련 변수
|
||||
protected static readonly int SpeedHash = Animator.StringToHash("Speed");
|
||||
protected static readonly int AttackHash = Animator.StringToHash("Attack");
|
||||
protected static readonly int DamageHash = Animator.StringToHash("TakeDamage");
|
||||
protected static readonly int DeathTypeHash = Animator.StringToHash("DeathType");
|
||||
protected static readonly int DeathHash = Animator.StringToHash("Death");
|
||||
protected static readonly int ShieldHash = Animator.StringToHash("Shield");
|
||||
protected static readonly int OutlineColorHash = Shader.PropertyToID("_OutlineColor");
|
||||
|
||||
#endregion
|
||||
|
||||
#region Unity built-in methods
|
||||
|
||||
protected virtual void Awake()
|
||||
{
|
||||
InitComponent();
|
||||
FlagLookAtFlag();
|
||||
}
|
||||
|
||||
protected void Start()
|
||||
{
|
||||
InitStart();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Custom methods
|
||||
|
||||
protected virtual void InitComponent()
|
||||
{
|
||||
backpackContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container"));
|
||||
leftWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_hand_container"));
|
||||
leftShieldContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 L Clavicle/Bip001 L UpperArm/Bip001 L Forearm/Bip001 L Hand/L_shield_container"));
|
||||
headContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 Neck/Bip001 Head/Head_container"));
|
||||
rightWeaponContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/R_hand_container"));
|
||||
bodyContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Body_container"));
|
||||
flagContainer = Utils.GetComponentAndAssert<Transform>(transform.
|
||||
Find("Flag_container"));
|
||||
|
||||
humanAnimator = Utils.GetComponentAndAssert<Animator>(transform);
|
||||
humanAgent = Utils.GetComponentAndAssert<NavMeshAgent>(transform);
|
||||
myCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform);
|
||||
hitBoxCollider = Utils.GetComponentAndAssert<CapsuleCollider>(transform.Find("HitBox"));
|
||||
lookAtConstraint = Utils.GetComponentAndAssert<LookAtConstraint>(flagContainer);
|
||||
}
|
||||
|
||||
protected virtual void InitStart()
|
||||
{
|
||||
// var getAiViewData = GetAiViewData(false);
|
||||
//
|
||||
// InitViewModel(false);
|
||||
// FindMaterial();
|
||||
// SetLayer();
|
||||
// SetCloseWeapon(getAiViewData);
|
||||
// SetCurrentHp(AiStat.MaxHp);
|
||||
// SetMoveSpeed(AiStat.MoveSpd);
|
||||
//
|
||||
// DefensePos = transform.position;
|
||||
}
|
||||
|
||||
private void FlagLookAtFlag()
|
||||
{
|
||||
if (Camera.main != null)
|
||||
{
|
||||
var source = new ConstraintSource
|
||||
{
|
||||
sourceTransform = Camera.main.transform,
|
||||
weight = 1f
|
||||
};
|
||||
lookAtConstraint.AddSource(source);
|
||||
}
|
||||
|
||||
lookAtConstraint.constraintActive = true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8f5be050be5d811428c7ba86c4dde165
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/Ai/Human/Pirate.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/Human/Pirate.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7412cdde0dbfd14478199e8a4696df03
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
10
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs
Normal file
10
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs
Normal file
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateAi : HumanAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e86a27e3e99581c4c93d65fa02fdcdb5
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
174
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs
Normal file
174
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs
Normal file
@ -0,0 +1,174 @@
|
||||
using System;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[Serializable]
|
||||
public class PirateStat : IIdx
|
||||
{
|
||||
#region Property and variable
|
||||
|
||||
[field: Tooltip("고유 인덱스")]
|
||||
[field: SerializeField] public string Idx { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 모델 인덱스")]
|
||||
[field: SerializeField] public string ViewIdx { get; set; }
|
||||
|
||||
[field: Tooltip("Ai 종류")]
|
||||
[field: SerializeField] public GlobalValue.UnitType UnitType { get; set; }
|
||||
|
||||
[field: Tooltip("공격방식 종류")]
|
||||
[field: DisableIf("@true")]
|
||||
[field: SerializeField] public EAttackerType AttackerType { get; set; }
|
||||
|
||||
[field: Tooltip("공격 종류")]
|
||||
[field: DisableIf("@true")]
|
||||
[field: SerializeField] public EOffenseType OffenseType { get; set; }
|
||||
|
||||
[field: Tooltip("방어 종류")]
|
||||
[field: DisableIf("@true")]
|
||||
[field: SerializeField] public EDefenseType DefenseType { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 최대 체력")]
|
||||
[field: SerializeField] public float MaxHp { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터 현재 체력")]
|
||||
[field: SerializeField] public float CurrentHp { get; set; }
|
||||
|
||||
[field: Tooltip("공격력")]
|
||||
[field: SerializeField] public float Atk { get; set; }
|
||||
|
||||
[field: Tooltip("방어력")]
|
||||
[field: SerializeField] public float Def { get; set; }
|
||||
|
||||
[field: Tooltip("이동속도")]
|
||||
[field: SerializeField] public float MoveSpd { get; set; }
|
||||
|
||||
[field: Tooltip("공격속도(다음 공격 주기)")]
|
||||
[field: SerializeField] public float AtkCooldown { get; set; }
|
||||
|
||||
[field: Tooltip("시야 사거리")]
|
||||
[field: SerializeField] public float ViewRange { get; set; }
|
||||
|
||||
[field: Tooltip("공격 사거리")]
|
||||
[field: SerializeField] public float AtkRange { get; set; }
|
||||
|
||||
[field: Tooltip("수비 사거리")]
|
||||
[field: SerializeField] public float DefenseRange { get; set; }
|
||||
|
||||
[field: Tooltip("방패 캐릭터를 공격했을 때, 방패 관통률")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int ShieldPenetrationRate { get; set; }
|
||||
|
||||
[field: Tooltip("공격을 피할 수 있는 회피율")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int AvoidanceRate { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터의 방패 사용 유무")]
|
||||
[field: SerializeField] public bool UsingShield { get; set; }
|
||||
|
||||
[field: Tooltip("방패 캐릭터가 관통 당할 확률을 줄여주는 관통 저항률")]
|
||||
[field: ShowIf("@UsingShield == true")]
|
||||
[field: Range(0, 100)]
|
||||
[field: SerializeField] public int PenetrationResistivity { get; set; }
|
||||
|
||||
[field: Tooltip("캐릭터의 활 사용 유무")]
|
||||
[field: SerializeField] public bool UsingBow { get; set; }
|
||||
|
||||
[field: Tooltip("화살이 타겟에 도달하는 오차 범위(부정확함)")]
|
||||
[field: ShowIf("@UsingBow == true")]
|
||||
[field: Range(0, 5f)]
|
||||
[field: SerializeField] public float Inaccuracy { get; set; }
|
||||
|
||||
#endregion
|
||||
|
||||
#region Constructor
|
||||
|
||||
/// <summary>
|
||||
/// 기본 생성자
|
||||
/// </summary>
|
||||
public PirateStat()
|
||||
{
|
||||
Idx = null;
|
||||
ViewIdx = null;
|
||||
UnitType = GlobalValue.UnitType.NONE;
|
||||
AttackerType = EAttackerType.NONE;
|
||||
OffenseType = EOffenseType.NONE;
|
||||
DefenseType = EDefenseType.NONE;
|
||||
MaxHp = 0f;
|
||||
CurrentHp = 0f;
|
||||
Atk = 0f;
|
||||
Def = 0f;
|
||||
MoveSpd = 0f;
|
||||
AtkCooldown = 0f;
|
||||
ViewRange = 0f;
|
||||
AtkRange = 0f;
|
||||
DefenseRange = 0f;
|
||||
ShieldPenetrationRate = 0;
|
||||
AvoidanceRate = 0;
|
||||
UsingShield = false;
|
||||
PenetrationResistivity = 0;
|
||||
UsingBow = false;
|
||||
Inaccuracy = 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 일반 생성자
|
||||
/// </summary>
|
||||
public PirateStat(string idx, string viewIdx, GlobalValue.UnitType unitType, float maxHp, float currentHp, float atk, float def,
|
||||
float moveSpd, float atkCooldown, float viewRange, float atkRange, float defenseRange, int shieldPenetrationRate, int avoidanceRate,
|
||||
bool usingShield, int penetrationResistivity, bool usingBow, float inaccuracy)
|
||||
{
|
||||
Idx = idx;
|
||||
ViewIdx = viewIdx;
|
||||
UnitType = unitType;
|
||||
MaxHp = maxHp;
|
||||
CurrentHp = currentHp;
|
||||
Atk = atk;
|
||||
Def = def;
|
||||
MoveSpd = moveSpd;
|
||||
AtkCooldown = atkCooldown;
|
||||
ViewRange = viewRange;
|
||||
AtkRange = atkRange;
|
||||
DefenseRange = defenseRange;
|
||||
ShieldPenetrationRate = shieldPenetrationRate;
|
||||
AvoidanceRate = avoidanceRate;
|
||||
UsingShield = usingShield;
|
||||
PenetrationResistivity = penetrationResistivity;
|
||||
UsingBow = usingBow;
|
||||
Inaccuracy = inaccuracy;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 복사 생성자
|
||||
/// </summary>
|
||||
public PirateStat(PirateStat pirateStat)
|
||||
{
|
||||
Idx = pirateStat.Idx;
|
||||
ViewIdx = pirateStat.ViewIdx;
|
||||
UnitType = pirateStat.UnitType;
|
||||
AttackerType = pirateStat.AttackerType;
|
||||
OffenseType = pirateStat.OffenseType;
|
||||
DefenseType = pirateStat.DefenseType;
|
||||
MaxHp = pirateStat.MaxHp;
|
||||
CurrentHp = pirateStat.CurrentHp;
|
||||
Atk = pirateStat.Atk;
|
||||
Def = pirateStat.Def;
|
||||
MoveSpd = pirateStat.MoveSpd;
|
||||
AtkCooldown = pirateStat.AtkCooldown;
|
||||
ViewRange = pirateStat.ViewRange;
|
||||
AtkRange = pirateStat.AtkRange;
|
||||
DefenseRange = pirateStat.DefenseRange;
|
||||
ShieldPenetrationRate = pirateStat.ShieldPenetrationRate;
|
||||
AvoidanceRate = pirateStat.AvoidanceRate;
|
||||
UsingShield = pirateStat.UsingShield;
|
||||
PenetrationResistivity = pirateStat.PenetrationResistivity;
|
||||
UsingBow = pirateStat.UsingBow;
|
||||
Inaccuracy = pirateStat.Inaccuracy;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
8
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 35a6ee5b069c43a4784c5698d137f33d
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateArcher : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 46bd31fe387e9f84794c9fd6c7c7750a
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateAxeman : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 10b29c400f9b90e4eb2b3b69bc8ff49f
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateSpearman : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 18a0f769e4861e54cb4467bd1b8fd251
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateSwordKnight : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0998d53fcca988e4c9476143092169c6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
public class PirateSwordman : EnemyAi
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8a9f89dd6ed536a4299015e58eeb2673
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -76,37 +76,37 @@ namespace BlueWaterProject
|
||||
|
||||
protected override void SetLayer()
|
||||
{
|
||||
switch (AiStat.AiType)
|
||||
{
|
||||
case EAiType.NONE:
|
||||
break;
|
||||
case EAiType.PLAYER:
|
||||
gameObject.layer = LayerMask.NameToLayer("Player");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Player";
|
||||
TargetLayer = LayerMask.GetMask("Enemy");
|
||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
LayerMask.GetMask("Enemy");
|
||||
break;
|
||||
case EAiType.PIRATE:
|
||||
gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Pirate";
|
||||
TargetLayer = LayerMask.GetMask("Enemy");
|
||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
LayerMask.GetMask("Enemy");
|
||||
break;
|
||||
case EAiType.ENEMY:
|
||||
gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||
hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
hitBoxCollider.gameObject.tag = "Enemy";
|
||||
TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
// switch (AiStat.AiType)
|
||||
// {
|
||||
// case EAiType.NONE:
|
||||
// break;
|
||||
// case EAiType.PLAYER:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Player");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Player";
|
||||
// TargetLayer = LayerMask.GetMask("Enemy");
|
||||
// archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
// LayerMask.GetMask("Enemy");
|
||||
// break;
|
||||
// case EAiType.PIRATE:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Pirate");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Pirate";
|
||||
// TargetLayer = LayerMask.GetMask("Enemy");
|
||||
// archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
// LayerMask.GetMask("Enemy");
|
||||
// break;
|
||||
// case EAiType.ENEMY:
|
||||
// gameObject.layer = LayerMask.NameToLayer("Enemy");
|
||||
// hitBoxCollider.gameObject.layer = LayerMask.NameToLayer("HitBox");
|
||||
// hitBoxCollider.gameObject.tag = "Enemy";
|
||||
// TargetLayer = LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
// archerLayer = LayerMask.GetMask("Ground") | LayerMask.GetMask("Water") |
|
||||
// LayerMask.GetMask("Player") | LayerMask.GetMask("Pirate");
|
||||
// break;
|
||||
// default:
|
||||
// throw new ArgumentOutOfRangeException();
|
||||
// }
|
||||
|
||||
if (AiStat.AttackerType == EAttackerType.OFFENSE)
|
||||
{
|
||||
@ -249,8 +249,8 @@ namespace BlueWaterProject
|
||||
var arrow = arrowPool.Get();
|
||||
var isOffense = AiStat.AttackerType == EAttackerType.OFFENSE;
|
||||
|
||||
arrow.SetShootingArrow(leftWeaponContainer.position, transform.position,
|
||||
TargetTransform.position + rayOffset, AiStat, AiStat.AiType, AiStat.Inaccuracy, isOffense);
|
||||
// arrow.SetShootingArrow(leftWeaponContainer.position, transform.position,
|
||||
// TargetTransform.position + rayOffset, AiStat, AiStat.AiType, AiStat.Inaccuracy, isOffense);
|
||||
arrow.ShootArrowCoroutine();
|
||||
}
|
||||
|
||||
|
@ -1,12 +0,0 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "AiStatDataSo", menuName = "ScriptableObjects/AiStatData", order = 1)]
|
||||
public class AiStatDataSo : ScriptableObject
|
||||
{
|
||||
public List<AiStat> aiStatDataList = new(GlobalValue.AI_STAT_DATA_CAPACITY);
|
||||
}
|
||||
}
|
12
BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "EnemyStatDataSo", menuName = "ScriptableObjects/EnemyStatData", order = 1)]
|
||||
public class EnemyStatDataSo : ScriptableObject
|
||||
{
|
||||
public List<EnemyStat> enemyStatDataList = new(GlobalValue.ENEMY_STAT_DATA_CAPACITY);
|
||||
}
|
||||
}
|
12
BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs
Normal file
12
BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs
Normal file
@ -0,0 +1,12 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[CreateAssetMenu(fileName = "PirateStatDataSo", menuName = "ScriptableObjects/PirateStatData", order = 1)]
|
||||
public class PirateStatDataSo : ScriptableObject
|
||||
{
|
||||
public List<PirateStat> pirateStatDataList = new(GlobalValue.PIRATE_STAT_DATA_CAPACITY);
|
||||
}
|
||||
}
|
11
BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs.meta
Normal file
11
BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f7c2e9bf391cbc2458b6eacd61baed5c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -49,7 +49,7 @@ namespace BlueWaterProject
|
||||
private void InitDictionary()
|
||||
{
|
||||
aiViewDictionary = CreateDictionaryFromList(AiViewDataSo.aiViewDataList, GlobalValue.AI_VIEW_DATA_CAPACITY);
|
||||
aiStatDictionary = CreateDictionaryFromList(AiStatDataSo.aiStatDataList, GlobalValue.AI_STAT_DATA_CAPACITY);
|
||||
aiStatDictionary = CreateDictionaryFromList(AiStatDataSo.aiStatDataList, GlobalValue.ENEMY_STAT_DATA_CAPACITY);
|
||||
unitDictionary = CreateDictionaryFromList(UnitDataSo.unitDataList, GlobalValue.UNIT_DATA_CAPACITY);
|
||||
cardDictionary = CreateDictionaryFromList(CardDataSo.cardDataList, GlobalValue.CARD_DATA_CAPACITY);
|
||||
}
|
||||
|
@ -5,7 +5,8 @@ namespace BlueWaterProject
|
||||
{
|
||||
public const int CARD_DATA_CAPACITY = 50;
|
||||
public const int AI_VIEW_DATA_CAPACITY = 50;
|
||||
public const int AI_STAT_DATA_CAPACITY = 50;
|
||||
public const int ENEMY_STAT_DATA_CAPACITY = 50;
|
||||
public const int PIRATE_STAT_DATA_CAPACITY = 50;
|
||||
public const int UNIT_DATA_CAPACITY = 50;
|
||||
public const int ISLAND_DATA_CAPACITY = 50;
|
||||
public const int ONE_UNIT_CAPACITY = 16;
|
||||
|
@ -8842,9 +8842,8 @@ GameObject:
|
||||
- component: {fileID: 4733059974554311748}
|
||||
- component: {fileID: 8419222071034356516}
|
||||
- component: {fileID: 4265671296278834780}
|
||||
- component: {fileID: 2760820819000917674}
|
||||
m_Layer: 0
|
||||
m_Name: BaseCharacter
|
||||
m_Name: BaseHuman
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@ -8963,46 +8962,6 @@ CapsuleCollider:
|
||||
m_Height: 1.6
|
||||
m_Direction: 1
|
||||
m_Center: {x: 0, y: 0.8, z: 0}
|
||||
--- !u!114 &2760820819000917674
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 155132}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8d7b55c7ecdb49a4a89fa5e6f9022861, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
startWhenEnabled: 1
|
||||
asynchronousLoad: 0
|
||||
pauseWhenDisabled: 0
|
||||
restartWhenComplete: 0
|
||||
logTaskChanges: 0
|
||||
group: 0
|
||||
resetValuesOnRestart: 0
|
||||
externalBehavior: {fileID: 11400000, guid: 694a519b491de404d83985622db4d827, type: 2}
|
||||
mBehaviorSource:
|
||||
behaviorName: Behavior
|
||||
behaviorDescription:
|
||||
mTaskData:
|
||||
types: []
|
||||
parentIndex:
|
||||
startIndex:
|
||||
variableStartIndex:
|
||||
JSONSerialization: '{"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":"AttackerType","IsShared":true,"EAttackerTypemValue":"NONE"}]}'
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
startIndex:
|
||||
dataPosition:
|
||||
unityObjects: []
|
||||
byteData:
|
||||
byteDataArray:
|
||||
Version: 1.7.7
|
||||
gizmoViewMode: 2
|
||||
showBehaviorDesignerGizmo: 1
|
||||
--- !u!1 &156456
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
Loading…
Reference in New Issue
Block a user