Behavior Tree 테스트 중

This commit is contained in:
NTG_Lenovo 2023-09-11 16:16:02 +09:00
parent 72c961dbc4
commit 639ee838bc
43 changed files with 779 additions and 50 deletions

View File

@ -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

View File

@ -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;

View File

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

View File

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

View 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;
}
}
}

View File

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

View File

@ -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;
}
}
}

View File

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

View 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();
}
}
}

View File

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

View File

@ -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;
}
}
}

View File

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

View File

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

View File

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

View File

@ -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;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: e3fdf6e71e3deef46bb9ab0bcf3ea68e
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -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;
}
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6a6c4dcf5ecd5494d84255dd2ea4a646
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

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

View File

@ -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;
}
}
}

View File

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

View File

@ -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 }; }
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 02ba639560737f44db74c938a6eaf769
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -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 }; }
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: a8a13c299691ac64ab6d467bb8e8932f
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -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 }; }
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: ff361707107fef94788b3ff999b21044
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -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 }; }
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6e23fcea0f1d6544db6c749d0bbb2de5
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -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 }; }
}
}

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 00580f11879e46d4998b60f02d843ba7
MonoImporter:
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:

View File

@ -129,11 +129,6 @@ namespace BlueWaterProject
navMeshAgent.updateRotation = true;
}
}
protected override void Attack()
{
StartCoroutine(nameof(AttackAnimation));
}
public override void SetNearestTargetInOffense<T>(List<T> targetList)
{

View File

@ -51,7 +51,7 @@ namespace BlueWaterProject
private void RemoveIslandInfo()
{
if (!islandInfo) return;
if (islandInfo == null) return;
islandInfo.RemoveListElement(islandInfo.HouseList, transform);
}

View File

@ -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

View File

@ -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

View File

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

View 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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 694a519b491de404d83985622db4d827
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View 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:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 6ac3257696f4b30469f3e3e0576b146b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View 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

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 0fa0abbe34de7db4f87d218d194dcc5d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}
}
}