Behavior Tree 테스트 중
This commit is contained in:
parent
72c961dbc4
commit
639ee838bc
@ -40694,6 +40694,9 @@ MonoBehaviour:
|
||||
boat: {fileID: 2987405546353765599, guid: 96173da392e9a408d9aea814b4cfe00e, type: 3}
|
||||
assaultCard: {fileID: 6030931212828352948, guid: 410908daff8b945d8b8c446cb753408b,
|
||||
type: 3}
|
||||
radarTargetUi: {fileID: 0}
|
||||
nukeFire: {fileID: 0}
|
||||
grenadeFire: {fileID: 0}
|
||||
cardType:
|
||||
- {fileID: 21300000, guid: 550b6170d3e5c4cf885cf56fa1df8f6b, type: 3}
|
||||
- {fileID: 21300000, guid: fa70a195a66db4c7fb6180f4205a06b1, type: 3}
|
||||
@ -378354,7 +378357,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
islandInfo: {fileID: 888439617}
|
||||
islandInfo: {fileID: 0}
|
||||
maxHp: 500
|
||||
currentHp: 0
|
||||
--- !u!65 &1010297108
|
||||
@ -475658,7 +475661,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
islandInfo: {fileID: 888439617}
|
||||
islandInfo: {fileID: 0}
|
||||
maxHp: 500
|
||||
currentHp: 0
|
||||
--- !u!65 &1274110289
|
||||
@ -513613,7 +513616,7 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 910f2fd54fe913648b37e911580e8068, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
islandInfo: {fileID: 888439617}
|
||||
islandInfo: {fileID: 0}
|
||||
maxHp: 500
|
||||
currentHp: 0
|
||||
--- !u!65 &1375744724
|
||||
@ -704820,7 +704823,7 @@ Transform:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1871370245}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.67640686, y: -0.000000029802319, z: -0, w: 0.7365282}
|
||||
m_LocalRotation: {x: 0.67640686, y: 0.00000023841855, z: -0.0000002980232, w: 0.7365282}
|
||||
m_LocalPosition: {x: -0.0000002384187, y: 120, z: -10.000001}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
|
@ -64,8 +64,10 @@ namespace BlueWaterProject
|
||||
[DisableIf("@true")]
|
||||
[SerializeField] private IslandInfo islandInfo;
|
||||
|
||||
public bool IsAttackCoroutine { get; set; }
|
||||
public Vector3 DefensePos { get; set; }
|
||||
|
||||
protected bool isAttacking;
|
||||
private Vector3 defensePos;
|
||||
|
||||
protected Transform backpackContainer;
|
||||
protected Transform leftWeaponContainer;
|
||||
@ -118,7 +120,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
InitStart();
|
||||
ExecuteFindTarget();
|
||||
Attack();
|
||||
//Attack();
|
||||
navMeshAgent.stoppingDistance = AiStat.AtkRange;
|
||||
}
|
||||
|
||||
@ -369,7 +371,7 @@ namespace BlueWaterProject
|
||||
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
||||
break;
|
||||
case EDefenseType.DEFENDER:
|
||||
SetNearestTargetInDefense(defensePos, AiStat.DefenseRange);
|
||||
SetNearestTargetInDefense(DefensePos, AiStat.DefenseRange);
|
||||
break;
|
||||
case EDefenseType.KEEPER:
|
||||
SetNearestTargetInDefense(transform.position, AiStat.ViewRange);
|
||||
@ -422,7 +424,6 @@ namespace BlueWaterProject
|
||||
if (nearestTarget == null) return;
|
||||
|
||||
TargetTransform = (Transform)(object)nearestTarget;
|
||||
//Utils.SetCloseDestination(navMeshAgent, TargetTransform.position, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||
}
|
||||
|
||||
public virtual void SetNearestTargetInDefense(Vector3 centerPos, float range)
|
||||
@ -492,7 +493,7 @@ namespace BlueWaterProject
|
||||
Utils.SetCloseDestination(navMeshAgent, attackPos, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||
break;
|
||||
case EDefenseType.DEFENDER:
|
||||
if (Vector3.Distance(defensePos, attackPos) <= AiStat.DefenseRange)
|
||||
if (Vector3.Distance(DefensePos, attackPos) <= AiStat.DefenseRange)
|
||||
{
|
||||
Utils.SetCloseDestination(navMeshAgent, attackPos, AiStat.AtkRange - 0.5f, AiStat.AtkRange);
|
||||
}
|
||||
@ -584,7 +585,7 @@ namespace BlueWaterProject
|
||||
SetCurrentHp(AiStat.MaxHp);
|
||||
SetMoveSpeed(AiStat.MoveSpd);
|
||||
|
||||
defensePos = transform.position;
|
||||
DefensePos = transform.position;
|
||||
}
|
||||
|
||||
private void InitViewModel(bool isEditor)
|
||||
@ -659,34 +660,25 @@ namespace BlueWaterProject
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Attack()
|
||||
public virtual void Attack()
|
||||
{
|
||||
IsAttackCoroutine = true;
|
||||
StartCoroutine(nameof(AttackAnimation));
|
||||
}
|
||||
|
||||
protected virtual IEnumerator AttackAnimation()
|
||||
{
|
||||
while (true)
|
||||
closeWeapon.SetIsAttacked(false);
|
||||
closeWeapon.SetAttackerStat(AiStat);
|
||||
aiAnimator.SetTrigger(AttackHash);
|
||||
|
||||
while (isAttacking)
|
||||
{
|
||||
if (!CanAttack())
|
||||
{
|
||||
isAttacking = false;
|
||||
yield return FindTargetWaitTime;
|
||||
continue;
|
||||
}
|
||||
|
||||
closeWeapon.SetIsAttacked(false);
|
||||
closeWeapon.SetAttackerStat(AiStat);
|
||||
aiAnimator.SetTrigger(AttackHash);
|
||||
|
||||
while (isAttacking)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(AiStat.AtkCooldown);
|
||||
yield return null;
|
||||
}
|
||||
// ReSharper disable once IteratorNeverReturns
|
||||
|
||||
yield return new WaitForSeconds(AiStat.AtkCooldown);
|
||||
IsAttackCoroutine = false;
|
||||
}
|
||||
|
||||
protected virtual bool CanAttack()
|
||||
@ -742,7 +734,7 @@ namespace BlueWaterProject
|
||||
|
||||
private void RemoveIslandInfo()
|
||||
{
|
||||
if (!islandInfo) return;
|
||||
if (islandInfo == null) return;
|
||||
|
||||
islandInfo.RemoveListElement(islandInfo.EnemyList, transform);
|
||||
}
|
||||
@ -790,6 +782,7 @@ namespace BlueWaterProject
|
||||
}
|
||||
}
|
||||
|
||||
public IslandInfo GetIslandInfo() => islandInfo;
|
||||
public void SetIslandInfo(IslandInfo info) => islandInfo = info;
|
||||
public void SetAttackerType(EAttackerType type) => AiStat.AttackerType = type;
|
||||
public void SetOffenseType(EOffenseType type) => AiStat.OffenseType = type;
|
||||
|
8
BlueWater/Assets/02.Scripts/Ai/BehaviorTree.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/BehaviorTree.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e17ff32e5dc9e1c41b8d7e41f871d450
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
8
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task.meta
Normal file
8
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dde7f062b30207f419bf1b952edfc83b
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
26
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Attack.cs
Normal file
26
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Attack.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/Action")]
|
||||
public class Attack : Action
|
||||
{
|
||||
private AiController aiController;
|
||||
|
||||
public override void OnAwake()
|
||||
{
|
||||
aiController = transform.GetComponent<AiController>();
|
||||
}
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
aiController.Attack();
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return aiController.IsAttackCoroutine ? TaskStatus.Running : TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6875a9897212c2f45ac34352aa8b64ef
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,25 @@
|
||||
using BehaviorDesigner.Runtime;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/Conditional")]
|
||||
public class CanAttackInOffense : Conditional
|
||||
{
|
||||
[RequiredField] public SharedAiStat aiStat;
|
||||
[RequiredField] public SharedIslandInfo islandInfo;
|
||||
[RequiredField] public SharedTransform targetTransform;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (!targetTransform.Value || !islandInfo.Value.TargetAllList.Contains(targetTransform.Value)) return TaskStatus.Failure;
|
||||
|
||||
var targetToDistance = Vector3.Distance(targetTransform.Value.position, transform.position);
|
||||
var targetInAttackRange = targetToDistance <= aiStat.Value.AtkRange;
|
||||
|
||||
return targetInAttackRange ? TaskStatus.Success : TaskStatus.Failure;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f726c5737f44a1544b57c5f62cec144c
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
158
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/FindTarget.cs
Normal file
158
BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/FindTarget.cs
Normal file
@ -0,0 +1,158 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using BehaviorDesigner.Runtime;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using Action = BehaviorDesigner.Runtime.Tasks.Action;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/Action")]
|
||||
public class FindTarget : Action
|
||||
{
|
||||
[Title("Common variable")]
|
||||
[RequiredField] public SharedAiStat aiStat;
|
||||
[RequiredField] public SharedNavMeshAgent navMeshAgent;
|
||||
[RequiredField] public SharedTransform targetTransform;
|
||||
|
||||
[Title("Offense Variable")]
|
||||
public SharedIslandInfo islandInfo;
|
||||
|
||||
[Title("Defense Variable")]
|
||||
public SharedVector3 defensePos;
|
||||
|
||||
private AiController aiController;
|
||||
private bool isFindTargetCoroutine;
|
||||
|
||||
private static readonly WaitForSeconds FindTargetWaitTime = new(0.5f);
|
||||
|
||||
public override void OnAwake()
|
||||
{
|
||||
aiController = GetComponent<AiController>();
|
||||
}
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
switch (aiStat.Value.AttackerType)
|
||||
{
|
||||
case EAttackerType.NONE:
|
||||
Debug.Log("AiStat.AttackerType == NONE Error");
|
||||
break;
|
||||
case EAttackerType.OFFENSE:
|
||||
isFindTargetCoroutine = true;
|
||||
StartCoroutine(nameof(FindTargetInOffense));
|
||||
break;
|
||||
case EAttackerType.DEFENSE:
|
||||
isFindTargetCoroutine = true;
|
||||
StartCoroutine(nameof(FindTargetInDefense));
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return isFindTargetCoroutine ? TaskStatus.Running : TaskStatus.Success;
|
||||
}
|
||||
|
||||
public IEnumerator FindTargetInOffense()
|
||||
{
|
||||
switch (aiStat.Value.OffenseType)
|
||||
{
|
||||
case EOffenseType.NONE:
|
||||
Debug.Log("AiStat.OffenseType == NONE Error");
|
||||
break;
|
||||
case EOffenseType.NORMAL:
|
||||
if (islandInfo.Value.EnemyList.Count > 0)
|
||||
{
|
||||
aiController.SetNearestTargetInOffense(islandInfo.Value.EnemyList);
|
||||
}
|
||||
else if (islandInfo.Value.HouseList.Count > 0)
|
||||
{
|
||||
aiController.SetNearestTargetInOffense(islandInfo.Value.HouseList);
|
||||
}
|
||||
break;
|
||||
case EOffenseType.ONLY_HOUSE:
|
||||
if (navMeshAgent.Value.pathStatus == NavMeshPathStatus.PathPartial)
|
||||
{
|
||||
aiController.SetNearestTargetInOffense(islandInfo.Value.TargetAllList);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (islandInfo.Value.HouseList.Count > 0)
|
||||
{
|
||||
aiController.SetNearestTargetInOffense(islandInfo.Value.HouseList);
|
||||
}
|
||||
else if (islandInfo.Value.EnemyList.Count > 0)
|
||||
{
|
||||
aiController.SetNearestTargetInOffense(islandInfo.Value.EnemyList);
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
if (targetTransform.Value && navMeshAgent.Value.enabled)
|
||||
{
|
||||
var distanceToTarget = Vector3.Distance(transform.position, targetTransform.Value.position);
|
||||
|
||||
navMeshAgent.Value.isStopped = distanceToTarget <= navMeshAgent.Value.stoppingDistance;
|
||||
if (distanceToTarget > navMeshAgent.Value.stoppingDistance)
|
||||
{
|
||||
navMeshAgent.Value.SetDestination(targetTransform.Value.position);
|
||||
}
|
||||
}
|
||||
|
||||
yield return FindTargetWaitTime;
|
||||
isFindTargetCoroutine = false;
|
||||
}
|
||||
|
||||
public IEnumerator FindTargetInDefense()
|
||||
{
|
||||
switch (aiStat.Value.DefenseType)
|
||||
{
|
||||
case EDefenseType.NONE:
|
||||
Debug.Log("AiStat.DefenseType == NONE Error");
|
||||
break;
|
||||
case EDefenseType.STRIKER:
|
||||
aiController.SetNearestTargetInDefense(transform.position, aiStat.Value.ViewRange);
|
||||
break;
|
||||
case EDefenseType.MIDFIELDER:
|
||||
aiController.SetNearestTargetInDefense(transform.position, aiStat.Value.ViewRange);
|
||||
break;
|
||||
case EDefenseType.DEFENDER:
|
||||
aiController.SetNearestTargetInDefense(defensePos.Value, aiStat.Value.DefenseRange);
|
||||
break;
|
||||
case EDefenseType.KEEPER:
|
||||
aiController.SetNearestTargetInDefense(transform.position, aiStat.Value.ViewRange);
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
if (targetTransform.Value && navMeshAgent.Value.enabled)
|
||||
{
|
||||
var distanceToTarget = Vector3.Distance(transform.position, targetTransform.Value.position);
|
||||
|
||||
navMeshAgent.Value.isStopped = distanceToTarget <= navMeshAgent.Value.stoppingDistance;
|
||||
if (distanceToTarget > navMeshAgent.Value.stoppingDistance)
|
||||
{
|
||||
navMeshAgent.Value.SetDestination(targetTransform.Value.position);
|
||||
}
|
||||
}
|
||||
|
||||
yield return FindTargetWaitTime;
|
||||
isFindTargetCoroutine = false;
|
||||
}
|
||||
|
||||
public override void OnEnd()
|
||||
{
|
||||
StopAllCoroutines();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df8ebf14d54ec644f9203c1d3dcb3274
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,43 @@
|
||||
using BehaviorDesigner.Runtime;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
using Sirenix.OdinInspector;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/Action")]
|
||||
public class InitVariable : Action
|
||||
{
|
||||
[Title("Common variable")]
|
||||
[RequiredField] public SharedAiStat aiStat;
|
||||
[RequiredField] public SharedNavMeshAgent agent;
|
||||
|
||||
[Title("Offense variable")]
|
||||
public SharedIslandInfo islandInfo;
|
||||
public SharedBool isCommanded;
|
||||
|
||||
[Title("Defense variable")]
|
||||
public SharedVector3 defensePos;
|
||||
|
||||
private AiController aiController;
|
||||
|
||||
public override void OnStart()
|
||||
{
|
||||
aiController = GetComponent<AiController>();
|
||||
|
||||
aiStat.Value = aiController.AiStat;
|
||||
agent.Value = aiController.GetNavMeshAgent();
|
||||
|
||||
if (aiStat.Value.AttackerType == EAttackerType.OFFENSE)
|
||||
{
|
||||
islandInfo.Value = aiController.GetIslandInfo();
|
||||
isCommanded.Value = aiController.IsCommanded;
|
||||
}
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0f16bfce0fda1394aa75287d1197deff
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a54b7510bd752444f862463504e573f5
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a0e430e073cfd444f889ea710a57bf41
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,26 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables
|
||||
{
|
||||
[TaskCategory("Unity/SharedVariable")]
|
||||
[TaskDescription("Returns success if the variable value is equal to the compareTo value.")]
|
||||
public class CompareSharedAiType : Conditional
|
||||
{
|
||||
[Tooltip("The first variable to compare")]
|
||||
public SharedAiType variable;
|
||||
[Tooltip("The variable to compare to")]
|
||||
public SharedAiType compareTo;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return variable.Value.Equals(compareTo.Value) ? TaskStatus.Success : TaskStatus.Failure;
|
||||
}
|
||||
|
||||
public override void OnReset()
|
||||
{
|
||||
variable = EAiType.NONE;
|
||||
compareTo = EAiType.NONE;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e3fdf6e71e3deef46bb9ab0bcf3ea68e
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,26 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables
|
||||
{
|
||||
[TaskCategory("Unity/SharedVariable")]
|
||||
[TaskDescription("Returns success if the variable value is equal to the compareTo value.")]
|
||||
public class CompareSharedAttackerType : Conditional
|
||||
{
|
||||
[Tooltip("The first variable to compare")]
|
||||
public SharedAttackerType variable;
|
||||
[Tooltip("The variable to compare to")]
|
||||
public SharedAttackerType compareTo;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return variable.Value.Equals(compareTo.Value) ? TaskStatus.Success : TaskStatus.Failure;
|
||||
}
|
||||
|
||||
public override void OnReset()
|
||||
{
|
||||
variable = EAttackerType.NONE;
|
||||
compareTo = EAttackerType.NONE;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6a6c4dcf5ecd5494d84255dd2ea4a646
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b51024a661c57aa49879a8fecc4fa495
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,26 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace BehaviorDesigner.Runtime.Tasks.Unity.UnityVector2
|
||||
{
|
||||
[TaskCategory("Unity/Vector2")]
|
||||
[TaskDescription("Sets the value of the Vector2.")]
|
||||
public class SetValue : Action
|
||||
{
|
||||
[Tooltip("The Vector2 to get the values of")]
|
||||
public SharedVector2 vector2Value;
|
||||
[Tooltip("The Vector2 to set the values of")]
|
||||
public SharedVector2 vector2Variable;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
vector2Variable.Value = vector2Value.Value;
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
public override void OnReset()
|
||||
{
|
||||
vector2Value = Vector2.zero;
|
||||
vector2Variable = Vector2.zero;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 85d3b21532037744fa14ddebf47c3c74
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,11 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SharedAiStat : SharedVariable<AiStat>
|
||||
{
|
||||
public static implicit operator SharedAiStat(AiStat value) { return new SharedAiStat { mValue = value }; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02ba639560737f44db74c938a6eaf769
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,11 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SharedAiType : SharedVariable<EAiType>
|
||||
{
|
||||
public static implicit operator SharedAiType(EAiType value) { return new SharedAiType { mValue = value }; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a8a13c299691ac64ab6d467bb8e8932f
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,11 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SharedAttackerType : SharedVariable<EAttackerType>
|
||||
{
|
||||
public static implicit operator SharedAttackerType(EAttackerType value) { return new SharedAttackerType { mValue = value }; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ff361707107fef94788b3ff999b21044
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,11 @@
|
||||
using BlueWaterProject;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SharedIslandInfo : SharedVariable<IslandInfo>
|
||||
{
|
||||
public static implicit operator SharedIslandInfo(IslandInfo value) { return new SharedIslandInfo { mValue = value }; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6e23fcea0f1d6544db6c749d0bbb2de5
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -0,0 +1,12 @@
|
||||
using BlueWaterProject;
|
||||
using UnityEngine.AI;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BehaviorDesigner.Runtime
|
||||
{
|
||||
[System.Serializable]
|
||||
public class SharedNavMeshAgent : SharedVariable<NavMeshAgent>
|
||||
{
|
||||
public static implicit operator SharedNavMeshAgent(NavMeshAgent value) { return new SharedNavMeshAgent { mValue = value }; }
|
||||
}
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 00580f11879e46d4998b60f02d843ba7
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
@ -129,11 +129,6 @@ namespace BlueWaterProject
|
||||
navMeshAgent.updateRotation = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void Attack()
|
||||
{
|
||||
StartCoroutine(nameof(AttackAnimation));
|
||||
}
|
||||
|
||||
public override void SetNearestTargetInOffense<T>(List<T> targetList)
|
||||
{
|
||||
|
@ -51,7 +51,7 @@ namespace BlueWaterProject
|
||||
|
||||
private void RemoveIslandInfo()
|
||||
{
|
||||
if (!islandInfo) return;
|
||||
if (islandInfo == null) return;
|
||||
|
||||
islandInfo.RemoveListElement(islandInfo.HouseList, transform);
|
||||
}
|
||||
|
@ -18,6 +18,24 @@ namespace BlueWaterProject
|
||||
[field: SerializeField] public List<Transform> EnemyList { get; private set; }
|
||||
|
||||
[field: SerializeField] public List<Transform> TargetAllList { get; private set; }
|
||||
|
||||
public IslandInfo()
|
||||
{
|
||||
IslandName = null;
|
||||
HouseList = null;
|
||||
UnitList = null;
|
||||
EnemyList = null;
|
||||
TargetAllList = null;
|
||||
}
|
||||
|
||||
public IslandInfo(string islandName, List<Transform> houseList, List<UnitController> unitList, List<Transform> enemyList, List<Transform> targetAllList)
|
||||
{
|
||||
IslandName = islandName;
|
||||
HouseList = houseList;
|
||||
UnitList = unitList;
|
||||
EnemyList = enemyList;
|
||||
TargetAllList = targetAllList;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -8842,6 +8842,7 @@ GameObject:
|
||||
- component: {fileID: 4733059974554311748}
|
||||
- component: {fileID: 8419222071034356516}
|
||||
- component: {fileID: 4265671296278834780}
|
||||
- component: {fileID: 2760820819000917674}
|
||||
m_Layer: 0
|
||||
m_Name: BaseCharacter
|
||||
m_TagString: Untagged
|
||||
@ -8962,6 +8963,46 @@ 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
|
||||
|
8
BlueWater/Assets/09.BehaviorTree.meta
Normal file
8
BlueWater/Assets/09.BehaviorTree.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d6a4b862e177db49919bfd5fe6b7f13
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
40
BlueWater/Assets/09.BehaviorTree/BaseCharacter.asset
Normal file
40
BlueWater/Assets/09.BehaviorTree/BaseCharacter.asset
Normal file
@ -0,0 +1,40 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
|
||||
m_Name: BaseCharacter
|
||||
m_EditorClassIdentifier:
|
||||
mBehaviorSource:
|
||||
behaviorName: BaseCharacter
|
||||
behaviorDescription:
|
||||
mTaskData:
|
||||
types: []
|
||||
parentIndex:
|
||||
startIndex:
|
||||
variableStartIndex:
|
||||
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(337,90)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(4.152649,113.838943)"},"ID":1,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-2.63156128,120)"},"ID":2,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-214.714264,143)"},"ID":3,"Name":"Offense
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedAttackerType","NodeData":{"Offset":"(-129,123)","Comment":"AttackerType
|
||||
== OFFENSE"},"ID":4,"Name":"Compare Shared Attacker Type","Instant":true,"SharedAttackerTypevariable":{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":"AttackerType","IsShared":true,"EAttackerTypemValue":"NONE"},"SharedAttackerTypecompareTo":{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":null,"EAttackerTypemValue":"OFFENSE"}},{"Type":"BehaviorDesigner.Runtime.Tasks.BehaviorTreeReference","NodeData":{"Offset":"(110,120)"},"ID":5,"Name":"Offense
|
||||
Behavior","Instant":true,"ExternalBehavior[]externalBehaviors":[0],"SharedNamedVariable[]variables":[],"Booleancollapsed":false}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(274.264343,138.636353)"},"ID":6,"Name":"Defense
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedAttackerType","NodeData":{"Offset":"(-130,119.999969)","Comment":"AttackerType
|
||||
== DEFENSE"},"ID":7,"Name":"Compare Shared Attacker Type","Instant":true,"SharedAttackerTypevariable":{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":"AttackerType","IsShared":true,"EAttackerTypemValue":"NONE"},"SharedAttackerTypecompareTo":{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":null,"EAttackerTypemValue":"DEFENSE"}},{"Type":"BehaviorDesigner.Runtime.Tasks.BehaviorTreeReference","NodeData":{"Offset":"(110,119.999969)"},"ID":8,"Name":"Defense
|
||||
Behavior","Instant":true,"ExternalBehavior[]externalBehaviors":[1],"SharedNamedVariable[]variables":[],"Booleancollapsed":false}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedAttackerType","Name":"AttackerType","IsShared":true,"EAttackerTypemValue":"NONE"}]}'
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
startIndex:
|
||||
dataPosition:
|
||||
unityObjects:
|
||||
- {fileID: 11400000, guid: 0fa0abbe34de7db4f87d218d194dcc5d, type: 2}
|
||||
- {fileID: 11400000, guid: 6ac3257696f4b30469f3e3e0576b146b, type: 2}
|
||||
byteData:
|
||||
byteDataArray:
|
||||
Version: 1.7.7
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 694a519b491de404d83985622db4d827
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
32
BlueWater/Assets/09.BehaviorTree/DefenseBehavior.asset
Normal file
32
BlueWater/Assets/09.BehaviorTree/DefenseBehavior.asset
Normal file
@ -0,0 +1,32 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
|
||||
m_Name: DefenseBehavior
|
||||
m_EditorClassIdentifier:
|
||||
mBehaviorSource:
|
||||
behaviorName: DefenseBehavior
|
||||
behaviorDescription:
|
||||
mTaskData:
|
||||
types: []
|
||||
parentIndex:
|
||||
startIndex:
|
||||
variableStartIndex:
|
||||
JSONSerialization:
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
startIndex:
|
||||
dataPosition:
|
||||
unityObjects: []
|
||||
byteData:
|
||||
byteDataArray:
|
||||
Version:
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6ac3257696f4b30469f3e3e0576b146b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
39
BlueWater/Assets/09.BehaviorTree/OffenseBehavior.asset
Normal file
39
BlueWater/Assets/09.BehaviorTree/OffenseBehavior.asset
Normal file
@ -0,0 +1,39 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b23f08d2ae4cba14087c1ed36193d82b, type: 3}
|
||||
m_Name: OffenseBehavior
|
||||
m_EditorClassIdentifier:
|
||||
mBehaviorSource:
|
||||
behaviorName: OffenseBehavior
|
||||
behaviorDescription:
|
||||
mTaskData:
|
||||
types: []
|
||||
parentIndex:
|
||||
startIndex:
|
||||
variableStartIndex:
|
||||
JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(299.1951,149.024338)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-0.9877186,151.42572)"},"ID":1,"Name":"InitSequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.InitVariable","NodeData":{"Offset":"(-169.613129,152.2381)"},"ID":2,"Name":"Init
|
||||
Variable","Instant":true,"SharedAiStataiStat":{"Type":"BehaviorDesigner.Runtime.SharedAiStat","Name":"AiStat","IsShared":true,"AiStatmValue":{"UnitType<UnitType>k__BackingField":"NONE","EAiType<AiType>k__BackingField":"NONE","EAttackerType<AttackerType>k__BackingField":"NONE","EOffenseType<OffenseType>k__BackingField":"NONE","EDefenseType<DefenseType>k__BackingField":"NONE","Single<MaxHp>k__BackingField":0,"Single<CurrentHp>k__BackingField":0,"Single<Atk>k__BackingField":0,"Single<Def>k__BackingField":0,"Single<MoveSpd>k__BackingField":0,"Single<AtkCooldown>k__BackingField":0,"Single<ViewRange>k__BackingField":0,"Single<AtkRange>k__BackingField":0,"Single<DefenseRange>k__BackingField":0,"Int32<ShieldPenetrationRate>k__BackingField":0,"Int32<AvoidanceRate>k__BackingField":0,"Boolean<UsingShield>k__BackingField":false,"Int32<PenetrationResistivity>k__BackingField":0,"Boolean<UsingBow>k__BackingField":false,"Single<Inaccuracy>k__BackingField":0}},"SharedNavMeshAgentagent":{"Type":"BehaviorDesigner.Runtime.SharedNavMeshAgent","Name":"NavMeshAgent","IsShared":true},"SharedIslandInfoislandInfo":{"Type":"BehaviorDesigner.Runtime.SharedIslandInfo","Name":"IslandInfo","IsShared":true},"SharedBoolisCommanded":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedVector3defensePos":{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":null,"Vector3mValue":"(0,0,0)"}},{"Type":"BehaviorDesigner.Runtime.Tasks.Repeater","NodeData":{"Offset":"(200,154.615387)"},"ID":3,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Parallel","NodeData":{"Offset":"(-2.326233,150.280518)"},"ID":4,"Name":"Parallel","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-357.122,145.887024)"},"ID":5,"Name":"Find
|
||||
Target Sequence","Instant":true,"AbortTypeabortType":"Self","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedBool","NodeData":{"Offset":"(-104.611588,152.187439)"},"ID":6,"Name":"Compare
|
||||
Shared Bool","Instant":true,"SharedBoolvariable":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"IsCommanded","IsShared":true,"BooleanmValue":false},"SharedBoolcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}},{"Type":"BlueWaterProject.FindTarget","NodeData":{"Offset":"(95.29413,153.529358)"},"ID":7,"Name":"Find
|
||||
Target","Instant":true,"SharedAiStataiStat":{"Type":"BehaviorDesigner.Runtime.SharedAiStat","Name":"AiStat","IsShared":true,"AiStatmValue":{"UnitType<UnitType>k__BackingField":"NONE","EAiType<AiType>k__BackingField":"NONE","EAttackerType<AttackerType>k__BackingField":"NONE","EOffenseType<OffenseType>k__BackingField":"NONE","EDefenseType<DefenseType>k__BackingField":"NONE","Single<MaxHp>k__BackingField":0,"Single<CurrentHp>k__BackingField":0,"Single<Atk>k__BackingField":0,"Single<Def>k__BackingField":0,"Single<MoveSpd>k__BackingField":0,"Single<AtkCooldown>k__BackingField":0,"Single<ViewRange>k__BackingField":0,"Single<AtkRange>k__BackingField":0,"Single<DefenseRange>k__BackingField":0,"Int32<ShieldPenetrationRate>k__BackingField":0,"Int32<AvoidanceRate>k__BackingField":0,"Boolean<UsingShield>k__BackingField":false,"Int32<PenetrationResistivity>k__BackingField":0,"Boolean<UsingBow>k__BackingField":false,"Single<Inaccuracy>k__BackingField":0}},"SharedNavMeshAgentnavMeshAgent":{"Type":"BehaviorDesigner.Runtime.SharedNavMeshAgent","Name":"NavMeshAgent","IsShared":true},"SharedTransformtargetTransform":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true},"SharedIslandInfoislandInfo":{"Type":"BehaviorDesigner.Runtime.SharedIslandInfo","Name":"IslandInfo","IsShared":true},"SharedVector3defensePos":{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":null,"Vector3mValue":"(0,0,0)"}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(368.5714,150)"},"ID":8,"Name":"Behavior
|
||||
Selector","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-201.764771,150)"},"ID":9,"Name":"Attack
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.CanAttackInOffense","NodeData":{"Offset":"(-151.611847,128.141663)"},"ID":10,"Name":"Can
|
||||
Attack In Offense","Instant":true,"SharedAiStataiStat":{"Type":"BehaviorDesigner.Runtime.SharedAiStat","Name":"AiStat","IsShared":true,"AiStatmValue":{"UnitType<UnitType>k__BackingField":"NONE","EAiType<AiType>k__BackingField":"NONE","EAttackerType<AttackerType>k__BackingField":"NONE","EOffenseType<OffenseType>k__BackingField":"NONE","EDefenseType<DefenseType>k__BackingField":"NONE","Single<MaxHp>k__BackingField":0,"Single<CurrentHp>k__BackingField":0,"Single<Atk>k__BackingField":0,"Single<Def>k__BackingField":0,"Single<MoveSpd>k__BackingField":0,"Single<AtkCooldown>k__BackingField":0,"Single<ViewRange>k__BackingField":0,"Single<AtkRange>k__BackingField":0,"Single<DefenseRange>k__BackingField":0,"Int32<ShieldPenetrationRate>k__BackingField":0,"Int32<AvoidanceRate>k__BackingField":0,"Boolean<UsingShield>k__BackingField":false,"Int32<PenetrationResistivity>k__BackingField":0,"Boolean<UsingBow>k__BackingField":false,"Single<Inaccuracy>k__BackingField":0}},"SharedIslandInfoislandInfo":{"Type":"BehaviorDesigner.Runtime.SharedIslandInfo","Name":"IslandInfo","IsShared":true},"SharedTransformtargetTransform":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true}},{"Type":"BlueWaterProject.Attack","NodeData":{"Offset":"(127.615311,129.8023)"},"ID":11,"Name":"Attack","Instant":true}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedAiStat","Name":"AiStat","IsShared":true,"AiStatmValue":{"UnitType<UnitType>k__BackingField":"NONE","EAiType<AiType>k__BackingField":"NONE","EAttackerType<AttackerType>k__BackingField":"NONE","EOffenseType<OffenseType>k__BackingField":"NONE","EDefenseType<DefenseType>k__BackingField":"NONE","Single<MaxHp>k__BackingField":0,"Single<CurrentHp>k__BackingField":0,"Single<Atk>k__BackingField":0,"Single<Def>k__BackingField":0,"Single<MoveSpd>k__BackingField":0,"Single<AtkCooldown>k__BackingField":0,"Single<ViewRange>k__BackingField":0,"Single<AtkRange>k__BackingField":0,"Single<DefenseRange>k__BackingField":0,"Int32<ShieldPenetrationRate>k__BackingField":0,"Int32<AvoidanceRate>k__BackingField":0,"Boolean<UsingShield>k__BackingField":false,"Int32<PenetrationResistivity>k__BackingField":0,"Boolean<UsingBow>k__BackingField":false,"Single<Inaccuracy>k__BackingField":0}},{"Type":"BehaviorDesigner.Runtime.SharedNavMeshAgent","Name":"NavMeshAgent","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedIslandInfo","Name":"IslandInfo","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"IsCommanded","IsShared":true,"BooleanmValue":false},{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true}]}'
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
startIndex:
|
||||
dataPosition:
|
||||
unityObjects: []
|
||||
byteData:
|
||||
byteDataArray:
|
||||
Version: 1.7.7
|
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0fa0abbe34de7db4f87d218d194dcc5d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -1,26 +1,25 @@
|
||||
using UnityEngine;
|
||||
using BehaviorDesigner.Runtime;
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
|
||||
namespace BehaviorDesigner.Runtime.Tasks.Unity.UnityVector2
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Unity/Vector2")]
|
||||
[TaskDescription("Sets the value of the Vector2.")]
|
||||
public class SetValue : Action
|
||||
[TaskCategory("Custom/SetVariable")]
|
||||
public class SetIslandInfo : Action
|
||||
{
|
||||
[Tooltip("The Vector2 to get the values of")]
|
||||
public SharedVector2 vector2Value;
|
||||
[Tooltip("The Vector2 to set the values of")]
|
||||
public SharedVector2 vector2Variable;
|
||||
public SharedIslandInfo islandInfoValue;
|
||||
public SharedIslandInfo islandInfoVariable;
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
vector2Variable.Value = vector2Value.Value;
|
||||
islandInfoVariable.Value = islandInfoValue.Value;
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
|
||||
|
||||
public override void OnReset()
|
||||
{
|
||||
vector2Value = Vector2.zero;
|
||||
vector2Variable = Vector2.zero;
|
||||
islandInfoValue = null;
|
||||
islandInfoVariable = null;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user