Ai 상속 틀 변경

This commit is contained in:
NTG_Lenovo 2023-09-13 12:23:27 +09:00
parent e534106cde
commit 2b846a54e0
41 changed files with 112 additions and 94 deletions

View File

@ -34188,7 +34188,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 91032034} m_GameObject: {fileID: 91032034}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: -0.019106599, y: 0.4995399, z: 0.011021243, w: 0.86601007} m_LocalRotation: {x: -0.019106599, y: 0.49953982, z: 0.011021242, w: 0.8660101}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@ -37121,37 +37121,6 @@ Transform:
- {fileID: 1765855842} - {fileID: 1765855842}
m_Father: {fileID: 712552067} m_Father: {fileID: 712552067}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &99817018
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 99817019}
m_Layer: 0
m_Name: PlayerUnits
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &99817019
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 99817018}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &100142392 --- !u!1 &100142392
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -704808,7 +704777,7 @@ Transform:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1871370245} m_GameObject: {fileID: 1871370245}
serializedVersion: 2 serializedVersion: 2
m_LocalRotation: {x: 0.67640686, y: 0.00000023841855, z: -0.0000002980232, w: 0.7365282} m_LocalRotation: {x: 0.6764068, y: -0, z: -0, w: 0.7365283}
m_LocalPosition: {x: -0.0000002384187, y: 120, z: -10.000001} m_LocalPosition: {x: -0.0000002384187, y: 120, z: -10.000001}
m_LocalScale: {x: 1, y: 1, z: 1} m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@ -794900,7 +794869,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 06c19c0e062e84c169aca3af92060883, type: 3} m_Script: {fileID: 11500000, guid: 06c19c0e062e84c169aca3af92060883, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_persistent: 0
--- !u!1 &2105554825 --- !u!1 &2105554825
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -811519,5 +811487,4 @@ SceneRoots:
- {fileID: 222471351} - {fileID: 222471351}
- {fileID: 1994033914} - {fileID: 1994033914}
- {fileID: 342641572} - {fileID: 342641572}
- {fileID: 99817019}
- {fileID: 1574668128} - {fileID: 1574668128}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c610fa776fedd914683a0ad074480544
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,87 @@
using System;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Animations;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public abstract class CombatAi : HumanAi
{
#region Properties and variables
// 일반 변수
protected LayerMask targetLayer;
protected Vector3 defensePos;
// 컴포넌트 관련 변수
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 Abstract methods
protected abstract void SetLayer();
protected abstract void SetCurrentHp(float value);
#endregion
#region Unity built-in methods
protected override void Awake()
{
base.InitComponent();
FlagLookAtCamera();
SetLayer();
}
#endregion
#region Custom methods
protected override void InitComponent()
{
base.InitComponent();
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);
}
private void FlagLookAtCamera()
{
if (Camera.main != null)
{
var source = new ConstraintSource
{
sourceTransform = Camera.main.transform,
weight = 1f
};
lookAtConstraint.AddSource(source);
}
lookAtConstraint.constraintActive = true;
}
protected void SetMoveSpeed(float value) => humanAgent.speed = value;
#endregion
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7d395879fb0a0d740910a879261f7383
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -3,7 +3,7 @@ using UnityEngine;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
namespace BlueWaterProject namespace BlueWaterProject
{ {
public class EnemyAi : HumanAi public class EnemyAi : CombatAi
{ {
#region Properties and variables #region Properties and variables

View File

@ -6,7 +6,7 @@ using UnityEngine;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
namespace BlueWaterProject namespace BlueWaterProject
{ {
public class PirateAi : HumanAi public class PirateAi : CombatAi
{ {
#region Properties and variables #region Properties and variables

View File

@ -1,18 +1,12 @@
using UnityEngine; using UnityEngine;
using UnityEngine.AI;
using UnityEngine.Animations;
// ReSharper disable once CheckNamespace // ReSharper disable once CheckNamespace
namespace BlueWaterProject namespace BlueWaterProject
{ {
public abstract class HumanAi : BaseAi public class HumanAi : BaseAi
{ {
#region Properties and variables #region Properties and variables
// 일반 변수
protected LayerMask targetLayer;
protected Vector3 defensePos;
// 모델링 관련 변수 // 모델링 관련 변수
protected Transform backpackContainer; protected Transform backpackContainer;
protected Transform leftWeaponContainer; protected Transform leftWeaponContainer;
@ -22,30 +16,6 @@ namespace BlueWaterProject
protected Transform bodyContainer; protected Transform bodyContainer;
protected Transform flagContainer; 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 Abstract methods
protected abstract void SetLayer();
protected abstract void SetCurrentHp(float value);
#endregion #endregion
#region Unity built-in methods #region Unity built-in methods
@ -53,15 +23,13 @@ namespace BlueWaterProject
protected virtual void Awake() protected virtual void Awake()
{ {
InitComponent(); InitComponent();
FlagLookAtFlag();
SetLayer();
} }
#endregion #endregion
#region Custom methods #region Custom methods
private void InitComponent() protected virtual void InitComponent()
{ {
backpackContainer = Utils.GetComponentAndAssert<Transform>(transform. backpackContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container")); Find("Bip001/Bip001 Pelvis/Bip001 Spine/Backpack_container"));
@ -77,27 +45,6 @@ namespace BlueWaterProject
Find("Body_container")); Find("Body_container"));
flagContainer = Utils.GetComponentAndAssert<Transform>(transform. flagContainer = Utils.GetComponentAndAssert<Transform>(transform.
Find("Flag_container")); 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);
}
private void FlagLookAtFlag()
{
if (Camera.main != null)
{
var source = new ConstraintSource
{
sourceTransform = Camera.main.transform,
weight = 1f
};
lookAtConstraint.AddSource(source);
}
lookAtConstraint.constraintActive = true;
} }
protected void SetActiveViewModel(Transform container, int model) protected void SetActiveViewModel(Transform container, int model)
@ -115,8 +62,6 @@ namespace BlueWaterProject
} }
} }
protected void SetMoveSpeed(float value) => humanAgent.speed = value;
#endregion #endregion
} }
} }