From 2ff8c0bdbf47c7e5169f80500091418027b77002 Mon Sep 17 00:00:00 2001 From: Nam Tae Gun Date: Sat, 15 Jun 2024 10:20:43 +0900 Subject: [PATCH] =?UTF-8?q?#17=20=EB=AA=A8=EB=9E=98=EB=91=90=EB=8D=94?= =?UTF-8?q?=EC=A7=80=20=EC=85=80=ED=94=84=20=EC=8A=A4=ED=84=B4=20=EA=B8=B0?= =?UTF-8?q?=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit + SingleRoll 로직 수정 (간헐적으로 무한루프에 빠져서 멈추는 경우가 있었는데, 지금도 있는지 계속 해봐야 암) + StunParticle Stop() + Clear()로 스턴이 끝나면 즉시 파티클 종료 --- .../Enemy/Boss/Action/SelfStun.cs | 43 +++++++ .../Enemy/Boss/Action/SelfStun.cs.meta | 3 + .../Character/Enemy/Boss/SandMole/SandMole.cs | 6 +- .../Enemy/Boss/SandMole/SandMoleStatus.cs | 44 +++++++ .../Boss/SandMole/SandMoleStatus.cs.meta | 2 + .../Character/Player/Combat/CombatAttacker.cs | 1 + .../Character/Player/Combat/CombatStatus.cs | 1 + .../Enemy/Boss/SandMole/SingleRollData.asset | 3 + .../Boss/SandMole/Data/SingleRollData.cs | 3 + .../Skill/Enemy/Boss/SandMole/GateOfSpikes.cs | 4 +- .../Skill/Enemy/Boss/SandMole/SingleRoll.cs | 34 +++--- .../Characters/Enemies/Bosses/BaseBoss.prefab | 32 +++++ .../Characters/Enemies/Bosses/SandMole.prefab | 110 +++++++++++++++++- .../{Players/Combat => }/StunParticle.prefab | 0 .../Combat => }/StunParticle.prefab.meta | 0 Assets/11.BehaviorTree/SandMole.asset | 21 ++-- 16 files changed, 277 insertions(+), 30 deletions(-) create mode 100644 Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs create mode 100644 Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs.meta create mode 100644 Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs create mode 100644 Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs.meta rename Assets/05.Prefabs/Particles/{Players/Combat => }/StunParticle.prefab (100%) rename Assets/05.Prefabs/Particles/{Players/Combat => }/StunParticle.prefab.meta (100%) diff --git a/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs b/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs new file mode 100644 index 000000000..3412c3bbd --- /dev/null +++ b/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs @@ -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(); + } + + 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; + } + } +} \ No newline at end of file diff --git a/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs.meta b/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs.meta new file mode 100644 index 000000000..b52a1894d --- /dev/null +++ b/Assets/02.Scripts/BehaviorTree/Enemy/Boss/Action/SelfStun.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e5dcd9d551db35d4994686aa9fb56067 +timeCreated: 1717197290 diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs index b07d7eff0..f6dda531c 100644 --- a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMole.cs @@ -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(); SandMoleData = BossData as SandMoleData; BossMapController = MapManager.Instance.SandMoleMapController; } diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs new file mode 100644 index 000000000..a0bb4d90d --- /dev/null +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs @@ -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; + } + } +} \ No newline at end of file diff --git a/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs.meta b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs.meta new file mode 100644 index 000000000..eb763a0db --- /dev/null +++ b/Assets/02.Scripts/Character/Enemy/Boss/SandMole/SandMoleStatus.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 9aa905dd159cefc4cbeb417c688b9639 diff --git a/Assets/02.Scripts/Character/Player/Combat/CombatAttacker.cs b/Assets/02.Scripts/Character/Player/Combat/CombatAttacker.cs index a9fb486f1..0a5fc90c2 100644 --- a/Assets/02.Scripts/Character/Player/Combat/CombatAttacker.cs +++ b/Assets/02.Scripts/Character/Player/Combat/CombatAttacker.cs @@ -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); diff --git a/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs b/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs index 9365d694a..2afd2f069 100644 --- a/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs +++ b/Assets/02.Scripts/Character/Player/Combat/CombatStatus.cs @@ -79,6 +79,7 @@ namespace BlueWater.Players.Combat { Utils.EndUniqueCoroutine(this, ref _stunCoolDownCoroutine); _stunParticle.Stop(); + _stunParticle.Clear(); OnEndStun?.Invoke(); IsStunned = false; } diff --git a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SingleRollData.asset b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SingleRollData.asset index a0143ee66..56e4ba9aa 100644 --- a/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SingleRollData.asset +++ b/Assets/02.Scripts/ScriptableObject/Skill/Enemy/Boss/SandMole/SingleRollData.asset @@ -26,6 +26,9 @@ MonoBehaviour: k__BackingField: serializedVersion: 2 m_Bits: 128 + k__BackingField: + serializedVersion: 2 + m_Bits: 64 k__BackingField: 40 k__BackingField: 8 k__BackingField: 3 diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SingleRollData.cs b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SingleRollData.cs index eefc3a9d0..4e40416c0 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SingleRollData.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/Data/SingleRollData.cs @@ -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; diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs index 031676311..6a6dd25bf 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/GateOfSpikes.cs @@ -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) diff --git a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SingleRoll.cs b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SingleRoll.cs index e155efe72..ab3b89680 100644 --- a/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SingleRoll.cs +++ b/Assets/02.Scripts/Skill/Enemy/Boss/SandMole/SingleRoll.cs @@ -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]); } diff --git a/Assets/05.Prefabs/Characters/Enemies/Bosses/BaseBoss.prefab b/Assets/05.Prefabs/Characters/Enemies/Bosses/BaseBoss.prefab index 0e892011a..298de740e 100644 --- a/Assets/05.Prefabs/Characters/Enemies/Bosses/BaseBoss.prefab +++ b/Assets/05.Prefabs/Characters/Enemies/Bosses/BaseBoss.prefab @@ -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 diff --git a/Assets/05.Prefabs/Characters/Enemies/Bosses/SandMole.prefab b/Assets/05.Prefabs/Characters/Enemies/Bosses/SandMole.prefab index ac0a84536..506c8cede 100644 --- a/Assets/05.Prefabs/Characters/Enemies/Bosses/SandMole.prefab +++ b/Assets/05.Prefabs/Characters/Enemies/Bosses/SandMole.prefab @@ -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: k__BackingField: {fileID: 9002511558952892456} k__BackingField: {fileID: 1878389004569703936} k__BackingField: {fileID: 0} + 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} diff --git a/Assets/05.Prefabs/Particles/Players/Combat/StunParticle.prefab b/Assets/05.Prefabs/Particles/StunParticle.prefab similarity index 100% rename from Assets/05.Prefabs/Particles/Players/Combat/StunParticle.prefab rename to Assets/05.Prefabs/Particles/StunParticle.prefab diff --git a/Assets/05.Prefabs/Particles/Players/Combat/StunParticle.prefab.meta b/Assets/05.Prefabs/Particles/StunParticle.prefab.meta similarity index 100% rename from Assets/05.Prefabs/Particles/Players/Combat/StunParticle.prefab.meta rename to Assets/05.Prefabs/Particles/StunParticle.prefab.meta diff --git a/Assets/11.BehaviorTree/SandMole.asset b/Assets/11.BehaviorTree/SandMole.asset index 18e4ece91..effdfea74 100644 --- a/Assets/11.BehaviorTree/SandMole.asset +++ b/Assets/11.BehaviorTree/SandMole.asset @@ -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: