#23 디펜스 Ai 보완
This commit is contained in:
parent
b342cb3adf
commit
08233a9f1e
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,20 @@
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/EnemyAction")]
|
||||
public class BeAttackedOfEnemy : EnemyAction
|
||||
{
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
if (enemyAi.GetCombatAgent().pathPending || enemyAi.GetCombatAgent().remainingDistance > enemyAi.GetCombatAgent().stoppingDistance)
|
||||
{
|
||||
return TaskStatus.Running;
|
||||
}
|
||||
|
||||
enemyAi.SetBeAttacked(false, true);
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d11582d2ef4686a45b306c5a93d70bb6
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -0,0 +1,19 @@
|
||||
using BehaviorDesigner.Runtime.Tasks;
|
||||
|
||||
// ReSharper disable once CheckNamespace
|
||||
namespace BlueWaterProject
|
||||
{
|
||||
[TaskCategory("Custom/EnemyAction")]
|
||||
public class ReturnDefensePosOfEnemy : EnemyAction
|
||||
{
|
||||
public override void OnStart()
|
||||
{
|
||||
enemyAi.ReturnDefensePos(enemyAi.GetDefensePos());
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
{
|
||||
return TaskStatus.Success;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0984e3cb3464c4247922ba7d9eae2b71
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -8,7 +8,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
public override void OnStart()
|
||||
{
|
||||
pirateAi.MoveTarget(pirateAi.GetTargetTransform().position);
|
||||
pirateAi.MoveTarget(pirateAi.GetTargetTransform().position, GlobalValue.MAXIMUM_STOP_DISTANCE);
|
||||
}
|
||||
|
||||
public override TaskStatus OnUpdate()
|
||||
|
@ -45,7 +45,7 @@ namespace BlueWaterProject
|
||||
#region Abstract methods
|
||||
|
||||
protected abstract void SetLayer();
|
||||
protected abstract void SetCurrentHp(float value);
|
||||
protected abstract void SetCurrentHp(float value, bool useBehaviorTreeVariable = false);
|
||||
protected abstract void RemoveAiListElement();
|
||||
public abstract void FindTarget();
|
||||
public abstract bool CanAttack();
|
||||
@ -122,10 +122,11 @@ namespace BlueWaterProject
|
||||
behaviorTree.EnableBehavior();
|
||||
}
|
||||
|
||||
public void MoveTarget(Vector3 targetPos)
|
||||
public void MoveTarget(Vector3 targetPos, float stopDistance)
|
||||
{
|
||||
if (Vector3.Distance(combatAgent.destination, targetPos) < 0.1f) return;
|
||||
|
||||
combatAgent.stoppingDistance = stopDistance;
|
||||
combatAgent.SetDestination(targetPos);
|
||||
}
|
||||
|
||||
@ -145,12 +146,13 @@ namespace BlueWaterProject
|
||||
}
|
||||
}
|
||||
|
||||
public void SetTargetTransform(Transform value)
|
||||
public void SetTargetTransform(Transform value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
targetTransform = value;
|
||||
|
||||
var btTargetTransform = behaviorTree.GetVariable("TargetTransform");
|
||||
btTargetTransform?.SetValue(value);
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "TargetTransform", value);
|
||||
}
|
||||
|
||||
public void Die()
|
||||
@ -184,6 +186,7 @@ namespace BlueWaterProject
|
||||
public void SetDefendingIslandInfo(IslandInfo info) => defendingIslandInfo = info;
|
||||
public Transform GetTargetTransform() => targetTransform;
|
||||
public Vector3 GetDefensePos() => defensePos;
|
||||
public NavMeshAgent GetCombatAgent() => combatAgent;
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
@ -15,6 +15,7 @@ namespace BlueWaterProject
|
||||
[field: SerializeField] public EnemyStat EnemyStat { get; set; }
|
||||
|
||||
protected bool isAttackCoroutine;
|
||||
private bool beAttacked;
|
||||
private EnemyUnit enemyUnit;
|
||||
private int childNum;
|
||||
|
||||
@ -62,7 +63,7 @@ namespace BlueWaterProject
|
||||
|
||||
public void TakeDamage(float attackerPower, float attackerShieldPenetrationRate, Vector3? attackPos = null)
|
||||
{
|
||||
if (attackPos != null && combatAgent.enabled && EnemyStat.AttackerType == EAttackerType.DEFENSE && !targetTransform)
|
||||
if (attackPos != null && EnemyStat.AttackerType == EAttackerType.DEFENSE && !targetTransform)
|
||||
{
|
||||
BeAttackedMovement((Vector3)attackPos);
|
||||
}
|
||||
@ -103,7 +104,7 @@ namespace BlueWaterProject
|
||||
return;
|
||||
}
|
||||
var changeHp = Mathf.Max(EnemyStat.CurrentHp - finalDamage, 0);
|
||||
SetCurrentHp(changeHp);
|
||||
SetCurrentHp(changeHp, true);
|
||||
|
||||
// 죽었는지 체크
|
||||
if (changeHp == 0f) return;
|
||||
@ -154,13 +155,14 @@ namespace BlueWaterProject
|
||||
InitViewModel(enemyViewData);
|
||||
SetBehaviorTree(UnitManager.Inst.EnemyBehaviorTree);
|
||||
|
||||
SetCurrentHp(EnemyStat.MaxHp);
|
||||
SetCurrentHp(EnemyStat.MaxHp, true);
|
||||
SetMoveSpeed(EnemyStat.MoveSpd);
|
||||
|
||||
childNum = enemyUnit.transform.GetSiblingIndex();
|
||||
|
||||
if (EnemyStat.AttackerType == EAttackerType.DEFENSE)
|
||||
{
|
||||
SetDefensePos(transform.position);
|
||||
SetDefensePos(transform.position, true);
|
||||
childNum = transform.GetSiblingIndex();
|
||||
enemyUnit.SetDefensePos(defensePos, childNum);
|
||||
}
|
||||
}
|
||||
@ -257,7 +259,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (nearestTarget == null) return;
|
||||
|
||||
SetTargetTransform(nearestTarget);
|
||||
SetTargetTransform(nearestTarget, true);
|
||||
}
|
||||
|
||||
private void FindTargetInDefense()
|
||||
@ -293,7 +295,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (maxColliderCount <= 0)
|
||||
{
|
||||
SetTargetTransform(null);
|
||||
SetTargetTransform(null, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -310,7 +312,7 @@ namespace BlueWaterProject
|
||||
nearestTargetTransform = colliderWithinRange[i].transform;
|
||||
}
|
||||
|
||||
SetTargetTransform(nearestTargetTransform);
|
||||
SetTargetTransform(nearestTargetTransform, true);
|
||||
}
|
||||
|
||||
public void MoveTargetInDefense(Vector3 targetPos)
|
||||
@ -324,7 +326,12 @@ namespace BlueWaterProject
|
||||
case EDefenseType.MIDFIELDER:
|
||||
break;
|
||||
case EDefenseType.DEFENDER:
|
||||
if (Vector3.Distance(targetPos, defensePos) > EnemyStat.DefenseRange) return;
|
||||
if (Vector3.Distance(targetPos, defensePos) > EnemyStat.DefenseRange)
|
||||
{
|
||||
combatAgent.stoppingDistance = GlobalValue.MINIMUM_STOP_DISTANCE;
|
||||
combatAgent.SetDestination(defensePos);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case EDefenseType.KEEPER:
|
||||
return;
|
||||
@ -334,15 +341,25 @@ namespace BlueWaterProject
|
||||
|
||||
if (Vector3.Distance(combatAgent.destination, targetPos) < 0.1f) return;
|
||||
|
||||
combatAgent.stoppingDistance = GlobalValue.MAXIMUM_STOP_DISTANCE;
|
||||
combatAgent.SetDestination(targetPos);
|
||||
}
|
||||
|
||||
protected override void SetCurrentHp(float value)
|
||||
public void ReturnDefensePos(Vector3 targetPos)
|
||||
{
|
||||
if (Vector3.Distance(combatAgent.destination, targetPos) < 0.1f) return;
|
||||
|
||||
combatAgent.stoppingDistance = GlobalValue.MINIMUM_STOP_DISTANCE;
|
||||
combatAgent.SetDestination(targetPos);
|
||||
}
|
||||
|
||||
protected override void SetCurrentHp(float value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
EnemyStat.CurrentHp = value;
|
||||
|
||||
var btCurrentHp = behaviorTree.GetVariable("CurrentHp");
|
||||
btCurrentHp?.SetValue(value);
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "CurrentHp", value);
|
||||
}
|
||||
|
||||
protected override void RemoveAiListElement()
|
||||
@ -352,8 +369,7 @@ namespace BlueWaterProject
|
||||
enemyUnit.enemyUnitStat.EnemyAiList.Remove(this);
|
||||
}
|
||||
|
||||
childNum = enemyUnit.transform.GetSiblingIndex();
|
||||
SetDefensePos(enemyUnit.GetDefensePos(childNum));
|
||||
enemyUnit.ResetDefensePos();
|
||||
}
|
||||
|
||||
private void BeAttackedMovement(Vector3 attackPos)
|
||||
@ -379,16 +395,27 @@ namespace BlueWaterProject
|
||||
{
|
||||
if (item.GetTargetTransform()) continue;
|
||||
|
||||
item.MoveTarget(attackPos);
|
||||
item.SetBeAttacked(true, true);
|
||||
item.MoveTarget(attackPos, GlobalValue.MAXIMUM_STOP_DISTANCE);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetDefensePos(Vector3 value)
|
||||
public void SetDefensePos(Vector3 value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
defensePos = value;
|
||||
|
||||
var btDefensePos = behaviorTree.GetVariable("DefensePos");
|
||||
btDefensePos?.SetValue(value);
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "DefensePos", value);
|
||||
}
|
||||
|
||||
public void SetBeAttacked(bool value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
beAttacked = value;
|
||||
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "BeAttacked", value);
|
||||
}
|
||||
|
||||
public bool GetIsAttackCoroutine() => isAttackCoroutine;
|
||||
|
@ -128,7 +128,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (nearestTarget == null) return;
|
||||
|
||||
SetTargetTransform(nearestTarget);
|
||||
SetTargetTransform(nearestTarget, true);
|
||||
}
|
||||
|
||||
protected override void FindNearestTargetInRange(Vector3 centerPos, float range)
|
||||
@ -140,7 +140,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (maxColliderCount <= 0)
|
||||
{
|
||||
SetTargetTransform(null);
|
||||
SetTargetTransform(null, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -158,7 +158,7 @@ namespace BlueWaterProject
|
||||
nearestTargetTransform = colliderWithinRange[i].transform;
|
||||
}
|
||||
|
||||
SetTargetTransform(nearestTargetTransform);
|
||||
SetTargetTransform(nearestTargetTransform, true);
|
||||
}
|
||||
|
||||
private bool IsRaycastHitTarget(Vector3 myPos, Transform target)
|
||||
|
@ -147,7 +147,7 @@ namespace BlueWaterProject
|
||||
return;
|
||||
}
|
||||
var changeHp = Mathf.Max(PirateStat.CurrentHp - finalDamage, 0);
|
||||
SetCurrentHp(changeHp);
|
||||
SetCurrentHp(changeHp, true);
|
||||
|
||||
// 죽었는지 체크
|
||||
if (changeHp == 0f) return;
|
||||
@ -189,7 +189,7 @@ namespace BlueWaterProject
|
||||
FindMaterial();
|
||||
SetBehaviorTree(UnitManager.Inst.PirateBehaviorTree);
|
||||
|
||||
SetCurrentHp(PirateStat.MaxHp);
|
||||
SetCurrentHp(PirateStat.MaxHp, true);
|
||||
SetMoveSpeed(PirateStat.MoveSpd);
|
||||
|
||||
if (PirateStat.AttackerType == EAttackerType.DEFENSE)
|
||||
@ -242,15 +242,16 @@ namespace BlueWaterProject
|
||||
yield return null;
|
||||
}
|
||||
|
||||
combatAgent.stoppingDistance = GlobalValue.MAXIMUM_STOP_DISTANCE;
|
||||
combatAgent.SetDestination(movePos);
|
||||
SetIsCommanded(true);
|
||||
SetIsCommanded(true, true);
|
||||
|
||||
while (combatAgent.pathPending || combatAgent.remainingDistance > combatAgent.stoppingDistance)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
||||
SetIsCommanded(false);
|
||||
SetIsCommanded(false, true);
|
||||
}
|
||||
|
||||
public override void FindTarget()
|
||||
@ -334,7 +335,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (nearestTarget == null) return;
|
||||
|
||||
SetTargetTransform(nearestTarget);
|
||||
SetTargetTransform(nearestTarget, true);
|
||||
}
|
||||
|
||||
private void FindTargetInDefense()
|
||||
@ -370,7 +371,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (maxColliderCount <= 0)
|
||||
{
|
||||
SetTargetTransform(null);
|
||||
SetTargetTransform(null, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -387,7 +388,7 @@ namespace BlueWaterProject
|
||||
nearestTargetTransform = colliderWithinRange[i].transform;
|
||||
}
|
||||
|
||||
SetTargetTransform(nearestTargetTransform);
|
||||
SetTargetTransform(nearestTargetTransform, true);
|
||||
}
|
||||
|
||||
private void SetOutlineColor(Color color)
|
||||
@ -398,20 +399,22 @@ namespace BlueWaterProject
|
||||
}
|
||||
}
|
||||
|
||||
public void SetIsCommanded(bool value)
|
||||
public void SetIsCommanded(bool value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
isCommanded = value;
|
||||
|
||||
var btIsCommanded = behaviorTree.GetVariable("IsCommanded");
|
||||
btIsCommanded?.SetValue(value);
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "IsCommanded", value);
|
||||
}
|
||||
|
||||
protected override void SetCurrentHp(float value)
|
||||
protected override void SetCurrentHp(float value, bool useBehaviorTreeVariable = false)
|
||||
{
|
||||
PirateStat.CurrentHp = value;
|
||||
|
||||
var btCurrentHp = behaviorTree.GetVariable("CurrentHp");
|
||||
btCurrentHp?.SetValue(value);
|
||||
if (!useBehaviorTreeVariable) return;
|
||||
|
||||
Utils.SetBehaviorVariable(behaviorTree, "CurrentHp", value);
|
||||
}
|
||||
|
||||
protected override void RemoveAiListElement()
|
||||
|
@ -127,7 +127,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (nearestTarget == null) return;
|
||||
|
||||
SetTargetTransform(nearestTarget);
|
||||
SetTargetTransform(nearestTarget, true);
|
||||
}
|
||||
|
||||
protected override void FindNearestTargetInRange(Vector3 centerPos, float range)
|
||||
@ -139,7 +139,7 @@ namespace BlueWaterProject
|
||||
|
||||
if (maxColliderCount <= 0)
|
||||
{
|
||||
SetTargetTransform(null);
|
||||
SetTargetTransform(null, true);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -156,7 +156,7 @@ namespace BlueWaterProject
|
||||
nearestTargetTransform = colliderWithinRange[i].transform;
|
||||
}
|
||||
|
||||
SetTargetTransform(nearestTargetTransform);
|
||||
SetTargetTransform(nearestTargetTransform, true);
|
||||
}
|
||||
|
||||
private bool IsRaycastHitTarget(Vector3 myPos, Transform target)
|
||||
|
@ -1,4 +1,3 @@
|
||||
using System;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
|
||||
@ -12,7 +11,7 @@ namespace BlueWaterProject
|
||||
[PropertyOrder(-10)]
|
||||
public EnemyUnitStat enemyUnitStat;
|
||||
|
||||
private Vector3[] defensePos;
|
||||
[SerializeField] private Vector3[] defensePos;
|
||||
private bool isClickedTypeAllButton;
|
||||
|
||||
#endregion
|
||||
@ -87,7 +86,7 @@ namespace BlueWaterProject
|
||||
{
|
||||
for (var i = 0; i < enemyUnitStat.EnemyAiList.Count; i++)
|
||||
{
|
||||
enemyUnitStat.EnemyAiList[i].SetDefensePos(defensePos[i]);
|
||||
enemyUnitStat.EnemyAiList[i].SetDefensePos(defensePos[i], true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -16,6 +16,9 @@ namespace BlueWaterProject
|
||||
|
||||
public const int MAX_CANON_COUNT = 5;
|
||||
|
||||
public const float MINIMUM_STOP_DISTANCE = 0f;
|
||||
public const float MAXIMUM_STOP_DISTANCE = 3f;
|
||||
|
||||
/// <summary> Radar 바늘이 레이더에 겹치는 허용 범위 </summary>
|
||||
public const float RADAR_OVERLAP_TOLERANCE = 5f;
|
||||
public const float RADAR_RANGE = 100f;
|
||||
|
@ -1,7 +1,7 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using BehaviorDesigner.Runtime;
|
||||
using UnityEditor;
|
||||
using UnityEditor.Animations;
|
||||
using UnityEngine;
|
||||
using UnityEngine.AI;
|
||||
using UnityEngine.Assertions;
|
||||
@ -140,6 +140,12 @@ namespace BlueWaterProject
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void SetBehaviorVariable<T>(Behavior behaviorTreeComponent, string behaviorVariableName, T value)
|
||||
{
|
||||
var sharedVariable = behaviorTreeComponent.GetVariable(behaviorVariableName);
|
||||
sharedVariable?.SetValue(value);
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
public static T LoadFromFolder<T>(string folderPath, string name, string extension) where T : Object
|
||||
{
|
||||
|
@ -28,25 +28,27 @@ MonoBehaviour:
|
||||
Shared Float","Instant":true,"SharedFloatvariable":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"CurrentHp","IsShared":true,"SinglemValue":0},"SharedFloatcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0}},{"Type":"BlueWaterProject.DieOfCombat","NodeData":{"Offset":"(-77.26136,151.369934)"},"ID":7,"Name":"Die
|
||||
Of Combat","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(57.2359619,148.672363)"},"ID":8,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":3},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityGameObject.Destroy","NodeData":{"Offset":"(197.235962,148.672363)"},"ID":9,"Name":"Destroy","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"Singletime":0}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(259.285675,150)"},"ID":10,"Name":"Find
|
||||
Target Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.FindTargetOfEnemy","NodeData":{"Offset":"(-132.406738,148.091431)"},"ID":11,"Name":"Find
|
||||
Target Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.2998,153.643066)"},"ID":12,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-633.8519,153.138184)"},"ID":13,"Name":"Comeback
|
||||
DefensePos Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedTransform","NodeData":{"Offset":"(-327.5169,146.846512)","Comment":"TargetTransform
|
||||
== null"},"ID":14,"Name":"Compare Shared Transform","Instant":true,"SharedTransformvariable":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true},"SharedTransformcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":null}},{"Type":"BlueWaterProject.CanComebackDefensePosOfEnemy","NodeData":{"Offset":"(-107.697006,150)"},"ID":15,"Name":"Can
|
||||
Comeback Defense Pos Of Enemy","Instant":true},{"Type":"BlueWaterProject.IncreaseSharedInt","NodeData":{"Offset":"(105.676559,147.274521)"},"ID":16,"Name":"Increase
|
||||
Shared Int","Instant":true,"SharedInttargetInt":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(245.33844,154.789917)"},"ID":17,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-87.7636948,149.236938)"},"ID":18,"Name":"Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedInt","NodeData":{"Offset":"(-265.106171,150)"},"ID":19,"Name":"Compare
|
||||
Shared Int","Instant":true,"SharedIntvariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0},"SharedIntcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":6}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-119.574951,148.297974)"},"ID":20,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetDestination","NodeData":{"Offset":"(2.55319023,150)"},"ID":21,"Name":"Set
|
||||
Destination","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedVector3destination":{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":"DefensePos","IsShared":true,"Vector3mValue":"(0,0,0)"}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(122.553185,150)"},"ID":22,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(242.553162,150)"},"ID":23,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(104.242462,150)"},"ID":24,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(368.432861,147.142334)"},"ID":25,"Name":"Can
|
||||
Attack Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-230,150)"},"ID":26,"Name":"Move
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Inverter","NodeData":{"Offset":"(-211.24556,149.7959)"},"ID":27,"Name":"Inverter","Instant":true,"Children":[{"Type":"BlueWaterProject.CanAttackOfEnemy","NodeData":{"Offset":"(0,150)"},"ID":28,"Name":"Can
|
||||
Attack Of Enemy","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-84.35962,147.179443)"},"ID":29,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}},{"Type":"BlueWaterProject.MoveTargetOfEnemy","NodeData":{"Offset":"(77.3227158,145.83252)"},"ID":30,"Name":"Move
|
||||
Target Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(226.923065,150)"},"ID":31,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(356.6842,147.223755)"},"ID":32,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(426.8182,150)"},"ID":33,"Name":"Attack
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-141.443,148.954468)"},"ID":34,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true}},{"Type":"BlueWaterProject.AttackOfEnemy","NodeData":{"Offset":"(-3.29175377,147.723267)"},"ID":35,"Name":"Attack
|
||||
Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(153.181641,148.636353)"},"ID":36,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}}]}]}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"CurrentHp","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":"DefensePos","IsShared":true,"Vector3mValue":"(0,0,0)"},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}]}'
|
||||
Target Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.2998,153.643066)"},"ID":12,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-1107.87732,153.138184)"},"ID":13,"Name":"Comeback
|
||||
DefensePos Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedTransform","NodeData":{"Offset":"(-214.613708,146.846512)","Comment":"TargetTransform
|
||||
== null"},"ID":14,"Name":"Compare Shared Transform","Instant":true,"SharedTransformvariable":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true},"SharedTransformcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":null}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(154.442932,151.637573)"},"ID":15,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-382.760773,150)"},"ID":16,"Name":"Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedBool","NodeData":{"Offset":"(-136.8067,148.564941)","Comment":"BeAttacked
|
||||
== true"},"ID":17,"Name":"Compare Shared Bool","Instant":true,"SharedBoolvariable":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"BeAttacked","IsShared":true,"BooleanmValue":false},"SharedBoolcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true}},{"Type":"BlueWaterProject.BeAttackedOfEnemy","NodeData":{"Offset":"(123.1254,153.531)"},"ID":18,"Name":"Be
|
||||
Attacked Of Enemy","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(258.7465,154.556519)"},"ID":19,"Name":"Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.CanComebackDefensePosOfEnemy","NodeData":{"Offset":"(-219.48703,136.922852)"},"ID":20,"Name":"Can
|
||||
Comeback Defense Pos Of Enemy","Instant":true},{"Type":"BlueWaterProject.IncreaseSharedInt","NodeData":{"Offset":"(0.512756348,136.922852)"},"ID":21,"Name":"Increase
|
||||
Shared Int","Instant":true,"SharedInttargetInt":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(140.512756,136.922852)"},"ID":22,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-120.434143,149.236938)"},"ID":23,"Name":"Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedInt","NodeData":{"Offset":"(-327.606171,150)"},"ID":24,"Name":"Compare
|
||||
Shared Int","Instant":true,"SharedIntvariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0},"SharedIntcompareTo":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":6}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-182.07489,148.297974)"},"ID":25,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}},{"Type":"BlueWaterProject.ReturnDefensePosOfEnemy","NodeData":{"Offset":"(0,150)"},"ID":26,"Name":"Return
|
||||
Defense Pos Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(169.428146,150)"},"ID":27,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(289.428162,150)"},"ID":28,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(126.969711,150)"},"ID":29,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}}]}]}]}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(368.432861,147.142334)"},"ID":30,"Name":"Can
|
||||
Attack Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-230,150)"},"ID":31,"Name":"Move
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Inverter","NodeData":{"Offset":"(-211.24556,149.7959)"},"ID":32,"Name":"Inverter","Instant":true,"Children":[{"Type":"BlueWaterProject.CanAttackOfEnemy","NodeData":{"Offset":"(0,150)"},"ID":33,"Name":"Can
|
||||
Attack Of Enemy","Instant":true}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-84.35962,147.179443)"},"ID":34,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}},{"Type":"BlueWaterProject.MoveTargetOfEnemy","NodeData":{"Offset":"(77.3227158,145.83252)"},"ID":35,"Name":"Move
|
||||
Target Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(226.923065,150)"},"ID":36,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":0.5},"SharedBoolrandomWait":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"SharedFloatrandomWaitMin":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"SharedFloatrandomWaitMax":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1}},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(356.6842,147.223755)"},"ID":37,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(426.8182,150)"},"ID":38,"Name":"Attack
|
||||
Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.UnityNavMeshAgent.SetIsStopped","NodeData":{"Offset":"(-141.443,148.954468)"},"ID":39,"Name":"Set
|
||||
Is Stopped","Instant":true,"SharedGameObjecttargetGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedBoolisStopped":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true}},{"Type":"BlueWaterProject.AttackOfEnemy","NodeData":{"Offset":"(-3.29175377,147.723267)"},"ID":40,"Name":"Attack
|
||||
Of Enemy","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.SetSharedInt","NodeData":{"Offset":"(153.181641,148.636353)"},"ID":41,"Name":"Set
|
||||
Shared Int","Instant":true,"SharedInttargetValue":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedInttargetVariable":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0}}]}]}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedTransform","Name":"TargetTransform","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"CurrentHp","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":"DefensePos","IsShared":true,"Vector3mValue":"(0,0,0)"},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"FailCount","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"BeAttacked","IsShared":true,"BooleanmValue":false}]}'
|
||||
fieldSerializationData:
|
||||
typeName: []
|
||||
fieldNameHash:
|
||||
|
Loading…
Reference in New Issue
Block a user