diff --git a/BlueWater/Assets/02.Scripts/Ai/AiController.cs b/BlueWater/Assets/02.Scripts/Ai/AiController.cs index 2bdd2e44b..1dbebad05 100644 --- a/BlueWater/Assets/02.Scripts/Ai/AiController.cs +++ b/BlueWater/Assets/02.Scripts/Ai/AiController.cs @@ -178,32 +178,32 @@ namespace BlueWaterProject UpdateLookAtTarget(); } - private void OnMouseEnter() - { - if (AiStat.AiType == EAiType.ENEMY) return; - - mouseEnterUnitController = gameObject.GetComponentInParent(); - - 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(); + // + // 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.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; diff --git a/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs b/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs new file mode 100644 index 000000000..0125f0a97 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class BaseAi : MonoBehaviour + { + + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs.meta b/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs.meta new file mode 100644 index 000000000..67c210c87 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/BaseAi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a1c1a5b338eae1e40a84da3eba99b987 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human.meta b/BlueWater/Assets/02.Scripts/Ai/Human.meta new file mode 100644 index 000000000..7756f2c43 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 22754cea389b9fc49a6a943b90c2710a +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy.meta new file mode 100644 index 000000000..d60a31fb2 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 76fb3986699b27a49b77bbe71fa5056d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs new file mode 100644 index 000000000..31193012f --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemyAi : HumanAi + { + + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs.meta new file mode 100644 index 000000000..266090901 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyAi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9bc95105830b2294d9941f686fc2f0ba +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/AiStat.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs similarity index 78% rename from BlueWater/Assets/02.Scripts/Ai/AiStat.cs rename to BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs index 5e4d5dd56..5bd5d32ef 100644 --- a/BlueWater/Assets/02.Scripts/Ai/AiStat.cs +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs @@ -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 /// /// 기본 생성자 /// - 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 /// /// 일반 생성자 /// - 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 /// /// 복사 생성자 /// - 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 diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs.meta new file mode 100644 index 000000000..1379f2c90 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/EnemyStat.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4c8366e51a915e1428ed891371635918 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type.meta new file mode 100644 index 000000000..3c215b161 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bd54d1697b7a75545858c144d17671c0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs new file mode 100644 index 000000000..1b168ef04 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemyArcher : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs.meta new file mode 100644 index 000000000..76e378eac --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemyArcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f93377933923904282d8a32d7b6dcd8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs new file mode 100644 index 000000000..373b5124a --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemySpearKnight : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs.meta new file mode 100644 index 000000000..d3502cdb6 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearKnight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3081b5da8eafc39478ee39b61bd01249 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs new file mode 100644 index 000000000..19fe8cc4e --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemySpearman : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs.meta new file mode 100644 index 000000000..48a863fba --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySpearman.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c14f537594d346b408093acb546136d8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs new file mode 100644 index 000000000..184073c8b --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemySwordKnight : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs.meta new file mode 100644 index 000000000..6690946e2 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordKnight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 215148f883898b34a99799d0ad0236e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs new file mode 100644 index 000000000..99a2ccfd2 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class EnemySwordman : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs.meta new file mode 100644 index 000000000..e8cc6bfd9 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Enemy/Type/EnemySwordman.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3bf2b5b70d0f63e40b3dddbd22c90c84 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs b/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs new file mode 100644 index 000000000..0724b8b4e --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs @@ -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. + Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container")); + leftWeaponContainer = Utils.GetComponentAndAssert(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. + 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. + Find("Bip001/Bip001 Pelvis/Bip001 Spine/Bip001 Neck/Bip001 Head/Head_container")); + rightWeaponContainer = Utils.GetComponentAndAssert(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. + Find("Body_container")); + flagContainer = Utils.GetComponentAndAssert(transform. + Find("Flag_container")); + + humanAnimator = Utils.GetComponentAndAssert(transform); + humanAgent = Utils.GetComponentAndAssert(transform); + myCollider = Utils.GetComponentAndAssert(transform); + hitBoxCollider = Utils.GetComponentAndAssert(transform.Find("HitBox")); + lookAtConstraint = Utils.GetComponentAndAssert(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 + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs.meta new file mode 100644 index 000000000..5bdc6d569 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/HumanAi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8f5be050be5d811428c7ba86c4dde165 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate.meta new file mode 100644 index 000000000..6d81ff4fb --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 7412cdde0dbfd14478199e8a4696df03 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs new file mode 100644 index 000000000..555cef138 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateAi : HumanAi + { + + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs.meta new file mode 100644 index 000000000..d6ed27c2b --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateAi.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e86a27e3e99581c4c93d65fa02fdcdb5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs new file mode 100644 index 000000000..cef626f00 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs @@ -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 + + /// + /// 기본 생성자 + /// + 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; + } + + /// + /// 일반 생성자 + /// + 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; + } + + /// + /// 복사 생성자 + /// + 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 + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/AiStat.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/AiStat.cs.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Pirate/PirateStat.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type.meta new file mode 100644 index 000000000..90c0aa9dd --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35a6ee5b069c43a4784c5698d137f33d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs new file mode 100644 index 000000000..04575510e --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateArcher : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs.meta new file mode 100644 index 000000000..b3b340bbe --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateArcher.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 46bd31fe387e9f84794c9fd6c7c7750a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs new file mode 100644 index 000000000..d4b55ca46 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateAxeman : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs.meta new file mode 100644 index 000000000..e5eb8e1f3 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateAxeman.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 10b29c400f9b90e4eb2b3b69bc8ff49f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs new file mode 100644 index 000000000..2aea6048b --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateSpearman : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs.meta new file mode 100644 index 000000000..3719b2867 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSpearman.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 18a0f769e4861e54cb4467bd1b8fd251 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs new file mode 100644 index 000000000..b151fa3e0 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateSwordKnight : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs.meta new file mode 100644 index 000000000..c29c60a92 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordKnight.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0998d53fcca988e4c9476143092169c6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs new file mode 100644 index 000000000..6df3384dd --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace BlueWaterProject +{ + public class PirateSwordman : EnemyAi + { + + } +} diff --git a/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs.meta new file mode 100644 index 000000000..7e0a01857 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Ai/Human/Pirate/Type/PirateSwordman.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8a9f89dd6ed536a4299015e58eeb2673 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Unit.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/Unit.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/Unit.cs similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/Unit.cs rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/Unit.cs diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/Unit.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/Unit.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/Unit.cs.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/Unit.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitController.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitController.cs similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitController.cs rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitController.cs diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitController.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitController.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitController.cs.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitController.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitManager.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitManager.cs similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitManager.cs rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitManager.cs diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitManager.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitManager.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitManager.cs.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitManager.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitSelection.cs b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitSelection.cs similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitSelection.cs rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitSelection.cs diff --git a/BlueWater/Assets/02.Scripts/Ai/Unit/UnitSelection.cs.meta b/BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitSelection.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Ai/Unit/UnitSelection.cs.meta rename to BlueWater/Assets/02.Scripts/Ai/Human/Unit/UnitSelection.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs b/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs index 3be2b08c2..89b654c2c 100644 --- a/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs +++ b/BlueWater/Assets/02.Scripts/Ai/Type/Archer.cs @@ -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(); } diff --git a/BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs b/BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs deleted file mode 100644 index 91e9678a8..000000000 --- a/BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs +++ /dev/null @@ -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 aiStatDataList = new(GlobalValue.AI_STAT_DATA_CAPACITY); - } -} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs b/BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs new file mode 100644 index 000000000..456b05903 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs @@ -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 enemyStatDataList = new(GlobalValue.ENEMY_STAT_DATA_CAPACITY); + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs.meta b/BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/Data/AiStatDataSo.cs.meta rename to BlueWater/Assets/02.Scripts/Data/EnemyStatDataSo.cs.meta diff --git a/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs b/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs new file mode 100644 index 000000000..d21cb6819 --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs @@ -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 pirateStatDataList = new(GlobalValue.PIRATE_STAT_DATA_CAPACITY); + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs.meta b/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs.meta new file mode 100644 index 000000000..d2502552b --- /dev/null +++ b/BlueWater/Assets/02.Scripts/Data/PirateStatDataSo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f7c2e9bf391cbc2458b6eacd61baed5c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/BlueWater/Assets/02.Scripts/DataManager.cs b/BlueWater/Assets/02.Scripts/DataManager.cs index 48bb03324..d8e34e634 100644 --- a/BlueWater/Assets/02.Scripts/DataManager.cs +++ b/BlueWater/Assets/02.Scripts/DataManager.cs @@ -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); } diff --git a/BlueWater/Assets/02.Scripts/Utility/GlobalValue.cs b/BlueWater/Assets/02.Scripts/Utility/GlobalValue.cs index fa6641314..f60a6e1f8 100644 --- a/BlueWater/Assets/02.Scripts/Utility/GlobalValue.cs +++ b/BlueWater/Assets/02.Scripts/Utility/GlobalValue.cs @@ -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; diff --git a/BlueWater/Assets/05.Prefabs/Character/BaseCharacter.prefab b/BlueWater/Assets/05.Prefabs/Character/BaseHuman.prefab similarity index 99% rename from BlueWater/Assets/05.Prefabs/Character/BaseCharacter.prefab rename to BlueWater/Assets/05.Prefabs/Character/BaseHuman.prefab index 3de905748..ea2763f98 100644 --- a/BlueWater/Assets/05.Prefabs/Character/BaseCharacter.prefab +++ b/BlueWater/Assets/05.Prefabs/Character/BaseHuman.prefab @@ -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 diff --git a/BlueWater/Assets/05.Prefabs/Character/BaseCharacter.prefab.meta b/BlueWater/Assets/05.Prefabs/Character/BaseHuman.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Character/BaseCharacter.prefab.meta rename to BlueWater/Assets/05.Prefabs/Character/BaseHuman.prefab.meta