#17 모래두더지 셀프 스턴 기능 추가

+ SingleRoll 로직 수정 (간헐적으로 무한루프에 빠져서 멈추는 경우가 있었는데, 지금도 있는지 계속 해봐야 암)
+ StunParticle Stop() + Clear()로 스턴이 끝나면 즉시 파티클 종료
This commit is contained in:
Nam Tae Gun 2024-06-15 10:20:43 +09:00
parent d27ac0918b
commit 2ff8c0bdbf
16 changed files with 277 additions and 30 deletions

View File

@ -0,0 +1,43 @@
using System;
using BehaviorDesigner.Runtime.Tasks;
using BlueWater.Interfaces;
using UnityEngine;
using Action = BehaviorDesigner.Runtime.Tasks.Action;
namespace BlueWater.BehaviorTrees.Enemies.Bosses.Actions
{
[TaskCategory("Custom/Enemy/Boss")]
[Serializable]
public class SelfStun : Action
{
[SerializeField]
private float _stunDuration = 4f;
private IStunnable _iStunnable;
private float _elapsedTime;
public override void OnAwake()
{
_iStunnable = transform.GetComponent<IStunnable>();
}
public override void OnStart()
{
_iStunnable?.Stun(_stunDuration);
_elapsedTime = 0f;
}
public override TaskStatus OnUpdate()
{
if (_iStunnable == null)
{
Debug.Log("_iStunnable을 찾을 수 없습니다.");
return TaskStatus.Success;
}
_elapsedTime += Time.deltaTime;
return _elapsedTime <= _stunDuration ? TaskStatus.Running : TaskStatus.Success;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e5dcd9d551db35d4994686aa9fb56067
timeCreated: 1717197290

View File

@ -1,4 +1,5 @@
using BlueWater.Maps;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole
@ -17,6 +18,8 @@ namespace BlueWater.Enemies.Bosses.SandMole
// Variables
#region Variables
[field: SerializeField, Required]
public SandMoleStatus SandMoleStatus { get; private set; }
public SandMoleData SandMoleData { get; private set; }
public BossMapController BossMapController { get; private set; }
@ -66,7 +69,8 @@ namespace BlueWater.Enemies.Bosses.SandMole
protected override void InitializeComponents()
{
base.InitializeComponents();
SandMoleStatus = GetComponent<SandMoleStatus>();
SandMoleData = BossData as SandMoleData;
BossMapController = MapManager.Instance.SandMoleMapController;
}

View File

@ -0,0 +1,44 @@
using BlueWater.Interfaces;
using BlueWater.Utility;
using Sirenix.OdinInspector;
using UnityEngine;
namespace BlueWater.Enemies.Bosses.SandMole
{
public class SandMoleStatus : MonoBehaviour, IStunnable
{
// Variables
#region Variables
// Stun
[Title("기절 효과")]
[SerializeField]
private ParticleSystem _stunParticle;
public bool IsStunned { get; private set; }
private Coroutine _stunCoolDownCoroutine;
#endregion
// Stun
public void Stun(float duration)
{
IsStunned = true;
if (_stunParticle)
{
_stunParticle.Play();
}
Utils.StartUniqueCoroutine(this, ref _stunCoolDownCoroutine, Utils.CoolDownCoroutine(duration, EndStun));
}
public void EndStun()
{
Utils.EndUniqueCoroutine(this, ref _stunCoolDownCoroutine);
_stunParticle.Stop();
_stunParticle.Clear();
IsStunned = false;
}
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9aa905dd159cefc4cbeb417c688b9639

View File

@ -241,6 +241,7 @@ namespace BlueWater.Players.Combat
if (iDamageable != null)
{
iDamageable.TakeDamage(ComboAttacks[comboAttackCount - 1].Damage);
// TODO : Collider에 따라 잘 안보이는 경우가 있음
var closestPoint = hitCollider.ClosestPoint(transform.position);
//var spawnPosition = closestPoint + Random.insideUnitSphere * 0.2f;
Instantiate(_swordAttackParticle, closestPoint, Quaternion.identity);

View File

@ -79,6 +79,7 @@ namespace BlueWater.Players.Combat
{
Utils.EndUniqueCoroutine(this, ref _stunCoolDownCoroutine);
_stunParticle.Stop();
_stunParticle.Clear();
OnEndStun?.Invoke();
IsStunned = false;
}

View File

@ -26,6 +26,9 @@ MonoBehaviour:
<WallLayer>k__BackingField:
serializedVersion: 2
m_Bits: 128
<GroundLayer>k__BackingField:
serializedVersion: 2
m_Bits: 64
<RollSpeed>k__BackingField: 40
<PushPower>k__BackingField: 8
<AirJumpForce>k__BackingField: 3

View File

@ -8,6 +8,9 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
[field: SerializeField]
public LayerMask WallLayer { get; private set; }
[field: SerializeField]
public LayerMask GroundLayer { get; private set; }
[field: SerializeField, Tooltip("초당 돌진 속도")]
public float RollSpeed { get; private set; } = 15f;

View File

@ -88,9 +88,9 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
private bool IsPositionValid(Vector3 position)
{
var isOnGroundLayer = Physics.Raycast(position + Vector3.up, Vector3.down, 5f, _gateOfSpikesData.GroundLayer);
var isGrounded = Physics.Raycast(position + Vector3.up, Vector3.down, 5f, _gateOfSpikesData.GroundLayer);
return isOnGroundLayer && _spikes.All(element => !(Vector3.Distance(position, element) < _gateOfSpikesData.MinDistanceBetweenAttacks));
return isGrounded && _spikes.All(element => !(Vector3.Distance(position, element) < _gateOfSpikesData.MinDistanceBetweenAttacks));
}
private void EndSkill(float cooldown, Action action)

View File

@ -76,22 +76,19 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
IsUsingSkill = true;
_animationController.ResetAnimationSpeed();
var startPosition = SkillUser.transform.position;
var targetVector = _targetCollider.transform.position - startPosition;
targetVector.y = 0f;
var targetPosition = _targetCollider.transform.position;
targetPosition.y = startPosition.y;
var targetVector = targetPosition - startPosition;
var targetDirection = targetVector.normalized;
float targetDistance;
if (Physics.Raycast(startPosition, targetDirection, out var hit, 100f, _singleRollData.WallLayer))
{
targetDistance = hit.distance;
}
else
if (!Physics.Raycast(startPosition, targetDirection, out var hit, 100f, _singleRollData.WallLayer))
{
Debug.LogError("벽을 탐지하지 못했습니다.");
EndSkill(0, actions[0]);
yield break;
}
var targetDistance = hit.distance;
transform.position = startPosition + Vector3.up * 3f;
transform.localScale = new Vector3(_colliderRadius, 6f, targetDistance * 2);
var angle = Mathf.Atan2(targetDirection.x, targetDirection.z) * Mathf.Rad2Deg;
@ -121,15 +118,13 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
var isCrashedWall = false;
while (!isCrashedWall)
{
if (elapsedTime >= 5f)
{
print("무한 루프 버그");
EndSkill(SkillData.Cooldown, actions[0]);
yield break;
}
if (!SkillUser)
elapsedTime += Time.deltaTime;
if (elapsedTime >= 5f || !SkillUser)
{
if (elapsedTime >= 5f)
{
print("무한 루프 버그");
}
EndSkill(SkillData.Cooldown, actions[0]);
yield break;
}
@ -147,6 +142,7 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
VisualFeedbackManager.Instance.CameraShake(CombatCameraManager.Instance.BaseCombatCamera,
_singleRollData.CameraShakingPower, _singleRollData.CameraShakingDuration);
var forceDirection = -targetDirection + Vector3.up * _singleRollData.AirJumpForce;
_userRigidbody.linearVelocity = Vector3.zero;
_userRigidbody.AddForce(forceDirection * _singleRollData.BounceBackForce, ForceMode.Impulse);
isCrashedWall = true;
break;
@ -192,6 +188,12 @@ namespace BlueWater.Enemies.Bosses.SandMole.Skills
Instantiate(_singleRollData.RockfallPrefab, spawnPosition, Quaternion.identity, _sandMoleMapController.ParticleInstantiateLocation);
}
elapsedTime = 0f;
while (elapsedTime < 1f)
{
elapsedTime += Time.deltaTime;
yield return null;
}
EndSkill(SkillData.Cooldown, actions[0]);
}

View File

@ -1,5 +1,36 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &455614778658724887
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 3323198499126332622}
m_Layer: 10
m_Name: Particles
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &3323198499126332622
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 455614778658724887}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 6255916646741457976}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &2736699741125954087
GameObject:
m_ObjectHideFlags: 0
@ -203,6 +234,7 @@ Transform:
m_Children:
- {fileID: 3476210053167940160}
- {fileID: 4470263094854566718}
- {fileID: 3323198499126332622}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!54 &8919762167155522148

View File

@ -114,7 +114,10 @@ PrefabInstance:
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedGameObjects:
- targetCorrespondingSourceObject: {fileID: 3323198499126332622, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: 5672546178639089928}
m_AddedComponents:
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: 3
@ -122,7 +125,15 @@ PrefabInstance:
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: -3236352117277465236}
- targetCorrespondingSourceObject: {fileID: 7170637981020870835, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
insertIndex: -1
addedObject: {fileID: 6857639742673603861}
m_SourcePrefab: {fileID: 100100000, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
--- !u!4 &988429566761204346 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3323198499126332622, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
m_PrefabInstance: {fileID: 2569800677110986420}
m_PrefabAsset: {fileID: 0}
--- !u!4 &1410821550004090100 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3476210053167940160, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
@ -217,6 +228,20 @@ MonoBehaviour:
<AIMovement>k__BackingField: {fileID: 9002511558952892456}
<BossSkillController>k__BackingField: {fileID: 1878389004569703936}
<Target>k__BackingField: {fileID: 0}
<SandMoleStatus>k__BackingField: {fileID: 6857639742673603861}
--- !u!114 &6857639742673603861
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4623786526972472839}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 9aa905dd159cefc4cbeb417c688b9639, type: 3}
m_Name:
m_EditorClassIdentifier:
_stunParticle: {fileID: 6635401445434353523}
--- !u!65 &5897569616117255232 stripped
BoxCollider:
m_CorrespondingSourceObject: {fileID: 8246553021837507316, guid: db7798cbd0a93f44aac56d479a2994c7, type: 3}
@ -270,3 +295,86 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 75b48aa4b99043cb9e665a892ec46c75, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1001 &8818561255954491281
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 988429566761204346}
m_Modifications:
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalScale.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalPosition.y
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalRotation.w
value: 0.7071068
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalRotation.x
value: -0.7071068
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: -90
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_ConstrainProportionsScale
value: 1
objectReference: {fileID: 0}
- target: {fileID: 9051303996272931366, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
propertyPath: m_Name
value: StunParticle
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
--- !u!4 &5672546178639089928 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 3808140985359726233, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
m_PrefabInstance: {fileID: 8818561255954491281}
m_PrefabAsset: {fileID: 0}
--- !u!198 &6635401445434353523 stripped
ParticleSystem:
m_CorrespondingSourceObject: {fileID: 2770976869746131170, guid: 5cf7cd372801c784a9875e0740cf9038, type: 3}
m_PrefabInstance: {fileID: 8818561255954491281}
m_PrefabAsset: {fileID: 0}

View File

@ -30,19 +30,20 @@ MonoBehaviour:
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-78.12497,150)"},"ID":10,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.87503,150)"},"ID":11,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(-931.5471,452.381)"},"ID":12,"Name":"Single
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-95.23809,150)"},"ID":13,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.37249,153.681122)"},"ID":14,"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.Sequence","NodeData":{"Offset":"(-616.0723,449.166626)"},"ID":15,"Name":"Multi
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(71.37249,153.681122)"},"ID":14,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"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.Sequence","NodeData":{"Offset":"(-616.0723,449.166626)"},"ID":15,"Name":"Multi
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-71.4286,150)"},"ID":16,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(78.571434,150)"},"ID":17,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(9.765897,452.758667)"},"ID":18,"Name":"Multi
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-383.3333,150)"},"ID":19,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-233.333313,150)"},"ID":20,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-84.2857,148.095215)"},"ID":21,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(65.71442,148.095215)"},"ID":22,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(222.6831,147.804932)"},"ID":23,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(372.682617,147.804932)"},"ID":24,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":4},"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.Sequence","NodeData":{"Offset":"(624.928467,449.4253)"},"ID":25,"Name":"Gate
Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-73.52939,150)"},"ID":26,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(76.47061,150)"},"ID":27,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(927.4391,446.111084)"},"ID":28,"Name":"Multi
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-70,150)"},"ID":29,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":30,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(1264.14648,453.97522)"},"ID":31,"Name":"Single
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":32,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":33,"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}}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true}]}'
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-233.333313,150)"},"ID":20,"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-84.2857,148.095215)"},"ID":21,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(65.71442,148.095215)"},"ID":22,"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":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(222.6831,147.804932)"},"ID":23,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.SelfStun","NodeData":{"Offset":"(370,150)"},"ID":24,"Name":"Self
Stun","Instant":true,"Single_stunDuration":4},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(496.964966,145.486084)"},"ID":25,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":1},"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.Sequence","NodeData":{"Offset":"(718.678467,449.4253)"},"ID":26,"Name":"Gate
Of Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-73.52939,150)"},"ID":27,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"GateOfSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(76.47061,150)"},"ID":28,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(1021.18909,446.111084)"},"ID":29,"Name":"Multi
Throw Spikes","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-70,150)"},"ID":30,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"MultiThrowSpikes"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(80,150)"},"ID":31,"Name":"Wait","Instant":true,"SharedFloatwaitTime":{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":null,"SinglemValue":2},"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.Sequence","NodeData":{"Offset":"(1357.89648,453.97522)"},"ID":32,"Name":"Single
Roll","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWater.BehaviorTrees.Enemies.Bosses.Actions.ActivateSkill","NodeData":{"Offset":"(-100,150)"},"ID":33,"Name":"Activate
Skill","Instant":true,"BossSkillName_bossSkillName":"SingleRoll"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(70,150)"},"ID":34,"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}}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":"CurrentHealthPoint","IsShared":true,"Int32mValue":0},{"Type":"BehaviorDesigner.Runtime.SharedCollider","Name":"Target","IsShared":true}]}'
fieldSerializationData:
typeName: []
fieldNameHash: