From 7dac1cd0e70b2decde026f761ddeb5181e4f7bbe Mon Sep 17 00:00:00 2001 From: NTG Date: Tue, 14 May 2024 01:23:53 +0900 Subject: [PATCH] =?UTF-8?q?Closes=20#256=20=EC=BD=94=EB=BF=94=EC=86=8C=20?= =?UTF-8?q?=EB=B3=B4=EC=8A=A4=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BlueWater/Assets/01.Scenes/02.Combat_2D.unity | 5 +- .../Enemy/FieldBoss/Action/ActivateSkill.cs | 6 +- .../Task/Enemy/FieldBoss/Action/MoveTarget.cs | 8 +- .../FieldBoss/Conditional/EnableSkill.cs | 5 +- .../Assets/02.Scripts/BossMapController.cs | 33 +- .../CombatPlayer/CombatPlayerController.cs | 2 +- .../CombatPlayer2D/CombatMovement.cs | 8 +- .../Character/CombatPlayer2D/CombatPlayer.cs | 2 +- .../CombatPlayer2D/CombatSkillController.cs | 9 +- .../Character/CombatPlayer2D/CombatStatus.cs | 10 +- .../Enemy/Type/FieldBoss/FieldBoss.cs | 203 +++++------ .../Enemy/Type/FieldBoss/Type/Rhinoceros.cs | 332 +++++++++++++++--- .../Type/FieldBoss/Type/Slime/TitanSlime.cs | 7 +- BlueWater/Assets/02.Scripts/GameManager.cs | 3 +- .../02.Scripts/Item/CombatItemInventoryUi.cs | 6 +- .../02.Scripts/Item/OceanItemInventoryUi.cs | 6 +- .../Assets/02.Scripts/NewSkill/BaseSkill.cs | 34 +- .../Rhinoceros/{LineRush.cs => BoolCharge.cs} | 108 +++--- .../{LineRush.cs.meta => BoolCharge.cs.meta} | 0 .../NewSkill/Rhinoceros/HammerAttack.cs | 97 ----- .../NewSkill/Rhinoceros/HammerSlam.cs | 117 ++++++ ...ammerAttack.cs.meta => HammerSlam.cs.meta} | 0 .../{HammerSwing.cs => MeteorSwing.cs} | 86 +++-- ...ammerSwing.cs.meta => MeteorSwing.cs.meta} | 0 .../{EarthquakeWave.cs => SeismicThrust.cs} | 68 ++-- ...uakeWave.cs.meta => SeismicThrust.cs.meta} | 0 .../{JumpSmash.cs => SkyfallSmash.cs} | 140 ++++---- ...JumpSmash.cs.meta => SkyfallSmash.cs.meta} | 0 .../NewSkill/So/Rhinoceros/BullCharge.asset | 2 +- .../NewSkill/So/Rhinoceros/HammerSlam.asset | 2 +- .../NewSkill/So/Rhinoceros/MeteorSwing.asset | 2 +- .../So/Rhinoceros/SeismicThrust.asset | 2 +- .../NewSkill/So/Rhinoceros/SkyfallSmash.asset | 4 +- .../02.Scripts/RhinocerosBossMapController.cs | 35 +- .../02.Scripts/SlimeBossMapController.cs | 31 +- .../Assets/02.Scripts/Ui/ClearPopupUi.cs | 6 + .../Assets/02.Scripts/Ui/CombatMenuPopupUi.cs | 6 +- .../Enemies/FieldBosses/Rhinoceros.prefab | 121 +++++-- .../Characters/Players/CombatPlayer2D.prefab | 1 + .../{LineRush.prefab => BullCharge.prefab} | 13 +- ...ush.prefab.meta => BullCharge.prefab.meta} | 0 ...{HammerAttack.prefab => HammerSlam.prefab} | 13 +- ...ack.prefab.meta => HammerSlam.prefab.meta} | 0 ...{HammerSwing.prefab => MeteorSwing.prefab} | 15 +- ...ng.prefab.meta => MeteorSwing.prefab.meta} | 0 ...hquakeWave.prefab => SeismicThrust.prefab} | 13 +- ....prefab.meta => SeismicThrust.prefab.meta} | 0 ...le.prefab => SeismicThrustParticle.prefab} | 2 +- ...meta => SeismicThrustParticle.prefab.meta} | 0 .../{JumpSmash.prefab => SkyFallSmash.prefab} | 13 +- ...h.prefab.meta => SkyFallSmash.prefab.meta} | 0 .../09.BehaviorTree/Enemy/Rhinoceros.asset | 59 ++-- .../{LineRush.anim => BullCharge.anim} | 2 +- ...ineRush.anim.meta => BullCharge.anim.meta} | 0 .../{HammerAttack.anim => HammerSlam.anim} | 2 +- ...rAttack.anim.meta => HammerSlam.anim.meta} | 0 .../{HammerSwing.anim => MeteorSwing.anim} | 2 +- ...rSwing.anim.meta => MeteorSwing.anim.meta} | 0 .../Fantasy Troll/Rhinoceros.controller | 148 +++----- .../{Jump.anim => SkyFallJump.anim} | 2 +- .../{Jump.anim.meta => SkyFallJump.anim.meta} | 0 .../{Smash.anim => SkyFallSmash.anim} | 2 +- ...Smash.anim.meta => SkyFallSmash.anim.meta} | 0 63 files changed, 1036 insertions(+), 757 deletions(-) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{LineRush.cs => BoolCharge.cs} (61%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{LineRush.cs.meta => BoolCharge.cs.meta} (100%) delete mode 100644 BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs create mode 100644 BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{HammerAttack.cs.meta => HammerSlam.cs.meta} (100%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{HammerSwing.cs => MeteorSwing.cs} (66%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{HammerSwing.cs.meta => MeteorSwing.cs.meta} (100%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{EarthquakeWave.cs => SeismicThrust.cs} (65%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{EarthquakeWave.cs.meta => SeismicThrust.cs.meta} (100%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{JumpSmash.cs => SkyfallSmash.cs} (66%) rename BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/{JumpSmash.cs.meta => SkyfallSmash.cs.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{LineRush.prefab => BullCharge.prefab} (93%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{LineRush.prefab.meta => BullCharge.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{HammerAttack.prefab => HammerSlam.prefab} (93%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{HammerAttack.prefab.meta => HammerSlam.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{HammerSwing.prefab => MeteorSwing.prefab} (92%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{HammerSwing.prefab.meta => MeteorSwing.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{EarthquakeWave.prefab => SeismicThrust.prefab} (95%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{EarthquakeWave.prefab.meta => SeismicThrust.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{EarthquakeParticle.prefab => SeismicThrustParticle.prefab} (99%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{EarthquakeParticle.prefab.meta => SeismicThrustParticle.prefab.meta} (100%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{JumpSmash.prefab => SkyFallSmash.prefab} (95%) rename BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/{JumpSmash.prefab.meta => SkyFallSmash.prefab.meta} (100%) rename BlueWater/Assets/Fantasy Troll/{LineRush.anim => BullCharge.anim} (99%) rename BlueWater/Assets/Fantasy Troll/{LineRush.anim.meta => BullCharge.anim.meta} (100%) rename BlueWater/Assets/Fantasy Troll/{HammerAttack.anim => HammerSlam.anim} (99%) rename BlueWater/Assets/Fantasy Troll/{HammerAttack.anim.meta => HammerSlam.anim.meta} (100%) rename BlueWater/Assets/Fantasy Troll/{HammerSwing.anim => MeteorSwing.anim} (99%) rename BlueWater/Assets/Fantasy Troll/{HammerSwing.anim.meta => MeteorSwing.anim.meta} (100%) rename BlueWater/Assets/Fantasy Troll/{Jump.anim => SkyFallJump.anim} (99%) rename BlueWater/Assets/Fantasy Troll/{Jump.anim.meta => SkyFallJump.anim.meta} (100%) rename BlueWater/Assets/Fantasy Troll/{Smash.anim => SkyFallSmash.anim} (99%) rename BlueWater/Assets/Fantasy Troll/{Smash.anim.meta => SkyFallSmash.anim.meta} (100%) diff --git a/BlueWater/Assets/01.Scenes/02.Combat_2D.unity b/BlueWater/Assets/01.Scenes/02.Combat_2D.unity index 76070f548..c080d8a65 100644 --- a/BlueWater/Assets/01.Scenes/02.Combat_2D.unity +++ b/BlueWater/Assets/01.Scenes/02.Combat_2D.unity @@ -3131,7 +3131,7 @@ MonoBehaviour: m_EditorClassIdentifier: version: 1 data: - dataString: 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 + dataString: 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 file_cachedStartup: {fileID: 4900000, guid: 6667cce87a89cd645becd4a92e85c888, type: 3} cacheStartup: 0 @@ -3374,6 +3374,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4bf8fa74e73b73d418a518bedb7b8bcb, type: 3} m_Name: m_EditorClassIdentifier: + moveNextStageButton: {fileID: 877215465} --- !u!1 &191889754 GameObject: m_ObjectHideFlags: 0 @@ -19745,7 +19746,7 @@ MonoBehaviour: m_PressedTrigger: Pressed m_SelectedTrigger: Selected m_DisabledTrigger: Disabled - m_Interactable: 1 + m_Interactable: 0 m_TargetGraphic: {fileID: 877215466} m_OnClick: m_PersistentCalls: diff --git a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/ActivateSkill.cs b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/ActivateSkill.cs index f1b104f8c..f71c91352 100644 --- a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/ActivateSkill.cs +++ b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/ActivateSkill.cs @@ -10,7 +10,7 @@ namespace BlueWaterProject [Serializable] public class ActivateSkill : Action { - [SerializeField] private string skillName; + [SerializeField] private int skillIndex; private FieldBoss fieldBoss; @@ -21,12 +21,12 @@ namespace BlueWaterProject public override void OnStart() { - fieldBoss.ActivateSkill(skillName); + fieldBoss.ActivateSkill(skillIndex); } public override TaskStatus OnUpdate() { - return fieldBoss.IsUsingSkill ? TaskStatus.Running : TaskStatus.Success; + return fieldBoss.IsActivatingSkill ? TaskStatus.Running : TaskStatus.Success; } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/MoveTarget.cs b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/MoveTarget.cs index e0919b6ea..5f7a5d7cb 100644 --- a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/MoveTarget.cs +++ b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Action/MoveTarget.cs @@ -1,6 +1,5 @@ using System; using BehaviorDesigner.Runtime.Tasks; -using UnityEngine; using Action = BehaviorDesigner.Runtime.Tasks.Action; // ReSharper disable once CheckNamespace @@ -10,9 +9,6 @@ namespace BlueWaterProject [Serializable] public class MoveTarget : Action { - [SerializeField] private float stoppingDistance; - [SerializeField] private float limitMovingTime; - private FieldBoss fieldBoss; public override void OnAwake() @@ -22,12 +18,12 @@ namespace BlueWaterProject public override void OnStart() { - fieldBoss.MoveTarget(stoppingDistance); + fieldBoss.FollowTarget(fieldBoss.Target); } public override TaskStatus OnUpdate() { - return fieldBoss.HasReachedDestination(limitMovingTime) ? TaskStatus.Success : TaskStatus.Running; + return fieldBoss.HasReachedDestination() ? TaskStatus.Success : TaskStatus.Running; } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Conditional/EnableSkill.cs b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Conditional/EnableSkill.cs index 76ce54dc3..968a53adc 100644 --- a/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Conditional/EnableSkill.cs +++ b/BlueWater/Assets/02.Scripts/Ai/BehaviorTree/Task/Enemy/FieldBoss/Conditional/EnableSkill.cs @@ -9,7 +9,8 @@ namespace BlueWaterProject [Serializable] public class EnableSkill : Conditional { - [SerializeField] private string skillName; + [SerializeField] private int skillIndex; + private FieldBoss fieldBoss; @@ -20,7 +21,7 @@ namespace BlueWaterProject public override TaskStatus OnUpdate() { - return fieldBoss.EnableSkill(skillName) ? TaskStatus.Success : TaskStatus.Failure; + return fieldBoss.CanSkill(skillIndex) ? TaskStatus.Success : TaskStatus.Failure; } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/BossMapController.cs b/BlueWater/Assets/02.Scripts/BossMapController.cs index e6f38dfae..2ab65a618 100644 --- a/BlueWater/Assets/02.Scripts/BossMapController.cs +++ b/BlueWater/Assets/02.Scripts/BossMapController.cs @@ -1,10 +1,11 @@ +using System.Collections; using System.Collections.Generic; using BlueWaterProject; using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace -public class BossMapController : MonoBehaviour +public abstract class BossMapController : MonoBehaviour { /// 컴포넌트 [Title("컴포넌트")] @@ -34,7 +35,6 @@ public class BossMapController : MonoBehaviour // 보스 override로 추가 } - public void AllDestroyBoss() { @@ -56,4 +56,33 @@ public class BossMapController : MonoBehaviour Destroy(element.gameObject); } } + + public virtual void DieBoss() + { + StartCoroutine(nameof(DieBossCoroutine)); + } + + private IEnumerator DieBossCoroutine() + { + VisualFeedbackManager.Inst.SetBaseTimeScale(0.1f); + CombatUiManager.Inst.FadeInOut(); + + var elapsedTime = 0f; + while (elapsedTime <= 3f) + { + elapsedTime += Time.unscaledDeltaTime; + yield return null; + } + AllDestroyBoss(); + VisualFeedbackManager.Inst.SetBaseTimeScale(1f); + + elapsedTime = 0f; + while (elapsedTime <= 2f) + { + elapsedTime += Time.unscaledDeltaTime; + yield return null; + } + + CombatUiManager.Inst.ClearPopupUi.Open(); + } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs index 1d653a1e1..8cc7c96c3 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer/CombatPlayerController.cs @@ -181,7 +181,7 @@ namespace BlueWaterProject var ui = CombatUiManager.Inst.MainSkillUi; ui.gameObject.SetActive(true); - mainSkill.SkillInputData.InitInputData(transform, myCollider, myRb, null, myVisualLook, myAnimator, null, targetLayer, ui); + mainSkill.SkillInputData.InitInputData(transform, myCollider, myRb, null, myVisualLook, myAnimator, null, targetLayer, ui, null, null); mainSkill.InitData(); } } diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatMovement.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatMovement.cs index 5fccc4b73..99400c699 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatMovement.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatMovement.cs @@ -96,7 +96,13 @@ namespace BlueWaterProject private void FixedUpdate() { - if (!EnableMove || IsDashing || combatStatus.IsStunned) return; + if (!EnableMove || IsDashing) return; + + if (combatStatus.IsStunned) + { + IsMoving = false; + return; + } ApplyMovement(); } diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatPlayer.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatPlayer.cs index 2379b5db6..b8d290a5e 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatPlayer.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatPlayer.cs @@ -125,7 +125,7 @@ namespace BlueWaterProject animator.InitComponent(anim); attacker.InitComponent(rb); health.InitComponent(flashWhiteSpriteRenderer); - skillController.InitComponent(col, rb, visualLook, anim); + skillController.InitComponent(col, rb, visualLook); status.InitComponent(flashWhiteSpriteRenderer); GameManager.Inst.CurrentCombatPlayer = this; diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatSkillController.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatSkillController.cs index dea0c072f..0dcc273cc 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatSkillController.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatSkillController.cs @@ -11,9 +11,9 @@ namespace BlueWaterProject private Collider col; private Rigidbody rb; private Transform visualLook; - private Animator anim; // Interfaces + private IAnimationStateController iAnimationStateController; private IMeleeComboAttackable iMeleeComboAttackable; // Variables @@ -31,17 +31,17 @@ namespace BlueWaterProject private void Start() { iMeleeComboAttackable = GetComponent(); + iAnimationStateController = GetComponent(); InitSkill(); } // Init methods - public void InitComponent(Collider collider, Rigidbody rigidbody, Transform visualLook, Animator animator) + public void InitComponent(Collider collider, Rigidbody rigidbody, Transform visualLook) { col = collider; rb = rigidbody; this.visualLook = visualLook; - anim = animator; } private void InitSkill() @@ -54,7 +54,8 @@ namespace BlueWaterProject ui.ResetSkillUi(); ui.gameObject.SetActive(true); - instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, anim, null, targetLayer, ui); + instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, + null, null, targetLayer, ui, iAnimationStateController, null); } // Events methods diff --git a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatStatus.cs b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatStatus.cs index 072e38e52..e1a1e5ceb 100644 --- a/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatStatus.cs +++ b/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatStatus.cs @@ -1,3 +1,4 @@ +using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace @@ -10,6 +11,9 @@ namespace BlueWaterProject [field: SerializeField] public float MoveSpeedCoefficient { get; private set; } [SerializeField] private Color slowColor; + [Title("효과")] + [SerializeField] private ParticleSystem stunParticle; + private SpriteRenderer flashWhiteSpriteRenderer; private Coroutine stunCoolDownCoroutine; @@ -30,6 +34,7 @@ namespace BlueWaterProject if (!enableTakeDamage) return; IsStunned = true; + stunParticle.Play(); if (stunCoolDownCoroutine != null) { @@ -38,9 +43,10 @@ namespace BlueWaterProject stunCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndStun)); } - private void EndStun() + public void EndStun() { IsStunned = false; + stunParticle.Stop(); stunCoolDownCoroutine = null; } @@ -59,7 +65,7 @@ namespace BlueWaterProject slowMoveSpeedCoolDownCoroutine = StartCoroutine(Utils.CoolDown(duration, EndSlowMoveSpeed)); } - private void EndSlowMoveSpeed() + public void EndSlowMoveSpeed() { flashWhiteSpriteRenderer.color = Color.white; IsSlowedMoveSpeed = false; diff --git a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs index 2cf991a1b..a12a7f78a 100644 --- a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs +++ b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/FieldBoss.cs @@ -1,10 +1,9 @@ -using System; using System.Collections; using System.Collections.Generic; using BehaviorDesigner.Runtime; +using Pathfinding; using Sirenix.OdinInspector; using UnityEngine; -using UnityEngine.AI; // ReSharper disable once CheckNamespace namespace BlueWaterProject @@ -19,18 +18,19 @@ namespace BlueWaterProject // 컴포넌트 [Title("컴포넌트")] [SerializeField] protected Rigidbody rb; - [SerializeField] protected Collider capsuleCollider; - [SerializeField] protected NavMeshAgent agent; + [SerializeField] protected Collider col; [SerializeField] protected BehaviorTree behaviorTree; [SerializeField] protected Transform visualLook; - [SerializeField] protected Animator animator; - [SerializeField] protected SpriteRenderer spriteRenderer; + [field: SerializeField] public Animator Anim { get; set; } + [SerializeField] protected SpriteRenderer flashWhiteSpriteRenderer; + [SerializeField] protected BossMapController mapController; + protected IAnimationStateController iAnimationStateController; + protected IAstarAI ai; // 보스 스탯 [field: Title("보스 스탯")] [field: SerializeField] public string BossName { get; private set; } [field: SerializeField] public float MaxHp { get; private set; } = 500f; - [SerializeField] protected float moveSpeed = 3f; [SerializeField] protected LayerMask targetLayer; // 피격 효과 @@ -39,26 +39,28 @@ namespace BlueWaterProject // 스킬 [Title("스킬")] - [SerializeField] protected List skillList = new(6); - protected Dictionary skillDictionary = new(6); - private List instanceSkillList = new(6); + [SerializeField] protected List skillList = new(); + protected List instantiateSkillList; // 실시간 데이터 [field: Title("실시간 데이터")] [field: SerializeField] public float CurrentHp { get; private set; } [field: SerializeField] public Collider Target { get; set; } - [field: SerializeField] public bool IsUsingSkill { get; protected set; } - - public FieldBossHpSlider FieldBossHpSlider { get; set; } - protected Vector3 PreviousDirection { get; set; } = Vector3.right; + [field: SerializeField] public bool IsActivatingSkill { get; protected set; } + + protected virtual Vector3 PreviousMoveDirection { get; set; } = Vector3.right; private Coroutine flashWhiteCoroutine; private WaitForSeconds flashWhiteWaitTime; private float departureTime = -1f; - protected bool isDead; + // Hashes protected static readonly int IsHitHash = Shader.PropertyToID("_IsHit"); + + // events + public delegate void ChangedCurrentHpEvent(float currentHp); + public event ChangedCurrentHpEvent OnChangedCurrentHp; #endregion @@ -66,25 +68,35 @@ namespace BlueWaterProject * Unity Events ***********************************************************************/ #region Unity Events - + + protected virtual void Awake() + { + InitComponent(); + } protected virtual void Start() { InitStart(); } - private void OnDestroy() + protected virtual void Update() { - if (FieldBossHpSlider != null) + FlipVisualLook(); + } + + protected virtual void OnDestroy() + { + if (CombatUiManager.Inst != null && CombatUiManager.Inst.FieldBossHpSlider != null) { - FieldBossHpSlider.SetActiveHpSlider(false); + CombatUiManager.Inst.FieldBossHpSlider.SetActiveHpSlider(false); + OnChangedCurrentHp -= CombatUiManager.Inst.FieldBossHpSlider.UpdateHpSlider; } - foreach (var element in instanceSkillList) + foreach (var element in instantiateSkillList) { - if (element != null) + if (element != null && element.gameObject != null) { - Destroy(element); + Destroy(element.gameObject); } } } @@ -97,33 +109,30 @@ namespace BlueWaterProject #region Init Methods [Button("셋팅 초기화")] - private void Init() + protected virtual void InitComponent() { rb = GetComponent(); - capsuleCollider = GetComponent(); - agent = GetComponent(); + col = GetComponent(); behaviorTree = GetComponent(); visualLook = transform.Find("VisualLook"); - animator = visualLook.GetComponent(); - spriteRenderer = visualLook.GetComponent(); + Anim = visualLook.GetComponent(); + flashWhiteSpriteRenderer = visualLook.GetComponent(); } - private void InitStart() + protected virtual void InitStart() { - agent.updateRotation = false; - agent.speed = moveSpeed; + OnChangedCurrentHp += CombatUiManager.Inst.FieldBossHpSlider.UpdateHpSlider; + SetCurrentHp(MaxHp); - Target = GameObject.FindGameObjectWithTag("CombatPlayer").GetComponent(); flashWhiteWaitTime = new WaitForSeconds(flashWhiteTime); + instantiateSkillList = new List(skillList.Count); foreach (var element in skillList) { - var skill = Instantiate(element, Vector3.zero, Quaternion.identity); - skillDictionary.Add(skill.SkillName, skill); - - skill.SkillInputData.InitInputData(transform, capsuleCollider, rb, agent, visualLook, animator, Target, targetLayer, null); - skill.InitData(); - instanceSkillList.Add(skill); + var instantiateSkill = Instantiate(element, Vector3.zero, Quaternion.identity); + instantiateSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, + Anim, Target, targetLayer, null, iAnimationStateController, ai); + instantiateSkillList.Add(instantiateSkill); } } @@ -138,11 +147,10 @@ namespace BlueWaterProject // IDamageable public void TakeDamage(float attackerPower, Vector3? attackPos = null) { - if (isDead) return; + if (CurrentHp <= 0) return; var changeHp = Mathf.Max(CurrentHp - attackerPower, 0); SetCurrentHp(changeHp); - FieldBossHpSlider.UpdateHpSlider(changeHp); // 죽었는지 체크 if (changeHp == 0f) @@ -152,7 +160,7 @@ namespace BlueWaterProject } // 공격 당함 - if (spriteRenderer) + if (flashWhiteSpriteRenderer) { flashWhiteCoroutine = StartCoroutine(nameof(FlashWhiteCoroutine)); } @@ -160,10 +168,16 @@ namespace BlueWaterProject public virtual void Die() { - Destroy(gameObject, 2f); + mapController.DieBoss(); } public float GetCurrentHp() => CurrentHp; + + protected void SetCurrentHp(float value) + { + CurrentHp = value; + OnChangedCurrentHp?.Invoke(value); + } #endregion @@ -171,81 +185,34 @@ namespace BlueWaterProject * Methods ***********************************************************************/ #region Methods - - public void MovePoint(Vector3 point, float stoppingDistance) + + public abstract void MoveToPosition(Vector3 position); + public abstract void TeleportToPosition(Vector3 position); + public abstract void FollowTarget(Collider target); + public abstract bool HasReachedDestination(); + public abstract void StopMovement(); + public abstract void CanMovement(); + public abstract void SetMovementSpeed(float speed); + + public bool CanSkill(int skillIndex) { - if (agent) - { - agent.stoppingDistance = stoppingDistance; - agent.SetDestination(point); - } - } - - public void MoveTarget(float stoppingDistance) - { - if (agent && agent.enabled) - { - //rb.isKinematic = true; - agent.isStopped = false; - agent.stoppingDistance = stoppingDistance; - agent.SetDestination(Target.transform.position); - } - } - - public bool HasReachedDestination(float limitMovingTime) - { - // 경로 계산 중이면 false - if (!agent || !agent.enabled || agent.pathPending) - { - departureTime = -1f; - return false; - } + if (IsActivatingSkill) return false; - if (departureTime < 0f) - { - departureTime = Time.time; - } - - if (departureTime > 0f && Time.time - departureTime >= limitMovingTime) - { - agent.velocity = Vector3.zero; - agent.isStopped = true; - //rb.isKinematic = false; - departureTime = -1f; - return true; - } - - // 남은 거리가 정지 거리 이상이면 false - if (agent.remainingDistance > agent.stoppingDistance) return false; - - // 경로가 있고, 속도가 0이 아니면 false - if (agent.hasPath && agent.velocity.sqrMagnitude != 0f) return false; - - agent.velocity = Vector3.zero; - agent.isStopped = true; - //rb.isKinematic = false; - departureTime = -1f; - return true; - } - - public bool EnableSkill(string skillName) - { - if (IsUsingSkill) return false; - - if (skillDictionary.ContainsKey(skillName)) - { - return skillDictionary[skillName].EnableSkill(); - } - - return false; + return instantiateSkillList[skillIndex].EnableSkill(); } [Button("스킬 사용")] - public virtual void ActivateSkill(string skillName){} - - private void SetCurrentHp(float value) + public void ActivateSkill(int skillIndex) { - CurrentHp = value; + if (!CanSkill(skillIndex)) return; + + StopMovement(); + IsActivatingSkill = true; + + instantiateSkillList[skillIndex].SkillInputData.PreviousDirection = PreviousMoveDirection; + instantiateSkillList[skillIndex].ActivateSkill( + () => IsActivatingSkill = false, + () => PreviousMoveDirection = GetTargetDirection()); } public float GetTargetDistance() @@ -261,12 +228,24 @@ namespace BlueWaterProject distance.y = 0f; return distance.normalized; } + + private void FlipVisualLook() + { + var localScale = visualLook.localScale; + localScale.x = PreviousMoveDirection.x switch + { + > 0.01f => Mathf.Abs(localScale.x), + < -0.01f => -Mathf.Abs(localScale.x), + _ => localScale.x + }; + visualLook.localScale = localScale; + } private IEnumerator FlashWhiteCoroutine() { - spriteRenderer.material.SetInt(IsHitHash, 1); + flashWhiteSpriteRenderer.material.SetInt(IsHitHash, 1); yield return flashWhiteWaitTime; - spriteRenderer.material.SetInt(IsHitHash, 0); + flashWhiteSpriteRenderer.material.SetInt(IsHitHash, 0); } #endregion diff --git a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Rhinoceros.cs b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Rhinoceros.cs index d1ea72866..d7ae04b35 100644 --- a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Rhinoceros.cs +++ b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Rhinoceros.cs @@ -1,19 +1,85 @@ +using System; +using System.Collections.Generic; +using Pathfinding; using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace namespace BlueWaterProject { - public class Rhinoceros : FieldBoss + public enum RhinocerosAnimationParameter + { + X_DIRECTION = 0, + Z_DIRECTION, + IS_MOVING, + IS_DEAD, + SKILL_INDEX + } + + public enum RhinocerosAnimationName + { + BULL_CHARGE, + HAMMER_SLAM, + METEOR_SWING, + SEISMIC_THRUST, + SKY_FALL_JUMP, + SKY_FALL_SMASH + } + + public class Rhinoceros : FieldBoss, IAnimationStateController { /*********************************************************************** * Variables ***********************************************************************/ #region Variables - // 실시간 상태 - [Title("실시간 상태")] - [SerializeField] private bool isMoving; + private bool isMoving; + public bool IsMoving + { + get => isMoving; + set + { + isMoving = value; + + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.IS_MOVING, isMoving); + } + } + + private Vector3 currentMoveDirection; + + private Vector3 previousMoveDirection = Vector3.right; + protected override Vector3 PreviousMoveDirection + { + get => previousMoveDirection; + set + { + previousMoveDirection = value; + + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.X_DIRECTION, PreviousMoveDirection.x); + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.Z_DIRECTION, PreviousMoveDirection.z); + } + } + + // Dictionaries + private Dictionary animationParameterHashDictionary; + private Dictionary animationNameHashDictionary; + + // Parameter hashes + private static readonly int XDirectionHash = Animator.StringToHash("xDirection"); + private static readonly int ZDirectionHash = Animator.StringToHash("zDirection"); + private static readonly int IsMovingHash = Animator.StringToHash("isMoving"); + private static readonly int IsDeadHash = Animator.StringToHash("isDead"); + private static readonly int SkillIndexHash = Animator.StringToHash("skillIndex"); + + // Animation name hashes + private static readonly int BullChargeHash = Animator.StringToHash("BullCharge"); + private static readonly int HammerSlamHash = Animator.StringToHash("HammerSlam"); + private static readonly int MeteorSwingHash = Animator.StringToHash("MeteorSwing"); + // private static readonly int SeismicThrustHash = Animator.StringToHash("SeismicThrust"); + private static readonly int SkyFallJumpHash = Animator.StringToHash("SkyFallJump"); + private static readonly int SkyFallSmashHash = Animator.StringToHash("SkyFallSmash"); + + // Hashes #endregion @@ -22,9 +88,18 @@ namespace BlueWaterProject ***********************************************************************/ #region Unity Events - private void Update() + protected override void Awake() { - MoveHandler(); + base.Awake(); + + InitDictionary(); + } + + protected override void Update() + { + HandleMovement(); + + base.Update(); } #endregion @@ -33,7 +108,46 @@ namespace BlueWaterProject * Init Methods ***********************************************************************/ #region Init Methods - + + protected override void InitComponent() + { + base.InitComponent(); + + mapController = FindAnyObjectByType(); + iAnimationStateController = GetComponent(); + ai = GetComponent(); + } + + private void InitDictionary() + { + animationParameterHashDictionary = new Dictionary(Enum.GetValues(typeof(RhinocerosAnimationParameter)).Length) + { + { RhinocerosAnimationParameter.X_DIRECTION, XDirectionHash }, + { RhinocerosAnimationParameter.Z_DIRECTION, ZDirectionHash }, + { RhinocerosAnimationParameter.IS_MOVING, IsMovingHash }, + { RhinocerosAnimationParameter.IS_DEAD, IsDeadHash }, + { RhinocerosAnimationParameter.SKILL_INDEX, SkillIndexHash }, + }; + + animationNameHashDictionary = new Dictionary(Enum.GetValues(typeof(RhinocerosAnimationName)).Length) + { + { RhinocerosAnimationName.BULL_CHARGE, BullChargeHash }, + { RhinocerosAnimationName.HAMMER_SLAM, HammerSlamHash }, + { RhinocerosAnimationName.METEOR_SWING, MeteorSwingHash }, + //{ RhinocerosAnimationName.SEISMIC_THRUST, SeismicThrustHash }, + { RhinocerosAnimationName.SKY_FALL_JUMP, SkyFallJumpHash }, + { RhinocerosAnimationName.SKY_FALL_SMASH, SkyFallSmashHash } + }; + } + + protected override void InitStart() + { + SetTarget(); + + base.InitStart(); + + behaviorTree.EnableBehavior(); + } #endregion @@ -42,30 +156,163 @@ namespace BlueWaterProject ***********************************************************************/ #region Interfaces + [Button("Die Test")] public override void Die() { - isDead = true; - - if (agent && agent.enabled) - { - agent.velocity = Vector3.zero; - agent.isStopped = true; - agent.enabled = false; - } + StopMovement(); if (rb) { rb.velocity = Vector3.zero; rb.isKinematic = true; } + + SetAnimationTrigger(RhinocerosAnimationParameter.IS_DEAD); + + base.Die(); + } - if (capsuleCollider && capsuleCollider.enabled) + public override void MoveToPosition(Vector3 position) + { + if (ai == null) return; + + ai.destination = position; + CanMovement(); + } + + public override void TeleportToPosition(Vector3 position) + { + ai.Teleport(position); + } + + public override bool HasReachedDestination() + { + return ai != null && !ai.pathPending && ai.reachedEndOfPath; + } + + public override void FollowTarget(Collider target) + { + if (ai == null || target == null) return; + + ai.destination = target.transform.position; + CanMovement(); + } + + public override void StopMovement() + { + if (ai == null) return; + + ai.isStopped = true; + ai.canMove = false; + ai.SetPath(null); + IsMoving = false; + } + + public override void CanMovement() + { + if (ai == null) return; + + ai.isStopped = false; + ai.canMove = true; + } + + public override void SetMovementSpeed(float speed) + { + if (ai == null) return; + + ai.maxSpeed = speed; + } + + // IAnimationStateController + public void SetAnimationParameter(T parameter, bool value) where T : Enum + { + if (parameter is RhinocerosAnimationParameter enumParameter) { - capsuleCollider.isTrigger = true; + if (animationParameterHashDictionary.TryGetValue(enumParameter, out var hash)) + { + Anim.SetBool(hash, value); + } + else + { + throw new KeyNotFoundException($"The parameter {parameter} was not found in the dictionary."); + } + } + else + { + throw new ArgumentException("Invalid parameter type for SetAnimationParameter"); + } + } + + public void SetAnimationParameter(T parameter, int value) where T : Enum + { + if (parameter is RhinocerosAnimationParameter enumParameter) + { + if (animationParameterHashDictionary.TryGetValue(enumParameter, out var hash)) + { + Anim.SetInteger(hash, value); + } + else + { + throw new KeyNotFoundException($"The parameter {parameter} was not found in the dictionary."); + } + } + else + { + throw new ArgumentException("Invalid parameter type for SetAnimationParameter"); + } + } + + public void SetAnimationParameter(T parameter, float value) where T : Enum + { + if (parameter is RhinocerosAnimationParameter enumParameter) + { + if (animationParameterHashDictionary.TryGetValue(enumParameter, out var hash)) + { + Anim.SetFloat(hash, value); + } + else + { + throw new KeyNotFoundException($"The parameter {parameter} was not found in the dictionary."); + } + } + else + { + throw new ArgumentException("Invalid parameter type for SetAnimationParameter"); + } + } + + public void SetAnimationTrigger(T parameter) where T : Enum + { + if (parameter is RhinocerosAnimationParameter enumParameter) + { + if (animationParameterHashDictionary.TryGetValue(enumParameter, out var hash)) + { + Anim.SetTrigger(hash); + } + else + { + throw new KeyNotFoundException($"The parameter {parameter} was not found in the dictionary."); + } + } + else + { + throw new ArgumentException("Invalid parameter type for SetAnimationParameter"); + } + } + + public bool IsComparingCurrentAnimation(T animationName, int animatorLayer = 0) where T : Enum + { + if (animationName is not RhinocerosAnimationName enumAnimationName) + { + throw new ArgumentException("Invalid parameter type for SetAnimationParameter"); } - animator.SetTrigger("isDead"); - Destroy(gameObject, 2f); + if (animationNameHashDictionary.TryGetValue(enumAnimationName, out var hash)) + { + return Anim.GetCurrentAnimatorStateInfo(animatorLayer).shortNameHash == hash; + } + + throw new KeyNotFoundException($"The parameter {animationName} was not found in the dictionary."); } #endregion @@ -75,48 +322,21 @@ namespace BlueWaterProject ***********************************************************************/ #region Methods - public override void ActivateSkill(string skillName) + private void HandleMovement() { - IsUsingSkill = true; - - skillDictionary[skillName].SkillInputData.PreviousDirection = PreviousDirection; - skillDictionary[skillName].ActivateSkill( - () => IsUsingSkill = false, - () => PreviousDirection = GetTargetDirection()); - } - - private void MoveHandler() - { - if (agent) + if (!ai.canMove) return; + + currentMoveDirection = ai.velocity.normalized; + IsMoving = ai.velocity != Vector3.zero; + if (IsMoving) { - //var localVelocity = transform.InverseTransformDirection(agent.velocity); - //var moveDirection = localVelocity.normalized; - - var moveDirection = agent.enabled ? agent.velocity.normalized : rb.velocity.normalized; - - isMoving = moveDirection != Vector3.zero; - animator.SetBool("isMoving", isMoving); - if (isMoving) - { - PreviousDirection = moveDirection; - } - animator.SetFloat("xDirection", PreviousDirection.x); - animator.SetFloat("zDirection", PreviousDirection.z); - - FlipVisualLook(PreviousDirection.x); + PreviousMoveDirection = currentMoveDirection; } } - - private void FlipVisualLook(float previousDirectionX) + + public void SetTarget() { - var localScale = visualLook.localScale; - localScale.x = previousDirectionX switch - { - > 0.01f => Mathf.Abs(localScale.x), - < -0.01f => -Mathf.Abs(localScale.x), - _ => localScale.x - }; - visualLook.localScale = localScale; + Target = GameManager.Inst.CurrentCombatPlayer.GetComponent(); } #endregion diff --git a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Slime/TitanSlime.cs b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Slime/TitanSlime.cs index 132637869..89adb81cb 100644 --- a/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Slime/TitanSlime.cs +++ b/BlueWater/Assets/02.Scripts/Character/Enemy/Type/FieldBoss/Type/Slime/TitanSlime.cs @@ -220,7 +220,7 @@ namespace BlueWaterProject instantiateDieParticle.Play(); if (slimeState.Level == 4 && slimeState.HasRabbit) { - mapController.DieRabbit(); + mapController.DieBoss(); return; } if (slimeState.Level <= 4) @@ -230,10 +230,7 @@ namespace BlueWaterProject Destroy(gameObject); } - public float GetCurrentHp() - { - return currentHp; - } + public float GetCurrentHp() => currentHp; public void SetCurrentHp(float value) { diff --git a/BlueWater/Assets/02.Scripts/GameManager.cs b/BlueWater/Assets/02.Scripts/GameManager.cs index 6fcb4d322..07634fa47 100644 --- a/BlueWater/Assets/02.Scripts/GameManager.cs +++ b/BlueWater/Assets/02.Scripts/GameManager.cs @@ -39,7 +39,8 @@ namespace BlueWaterProject public void InstantiateCombatPlayer(Vector3 position, Quaternion rotation = default) { - var instantiatePlayer = Instantiate(combatPlayerPrefab, position, rotation); + var instantiatePlayer = Instantiate(combatPlayerPrefab, position, rotation).GetComponent(); + CurrentCombatPlayer = instantiatePlayer; OnInstantiateCombatPlayer?.Invoke(instantiatePlayer.transform); } } diff --git a/BlueWater/Assets/02.Scripts/Item/CombatItemInventoryUi.cs b/BlueWater/Assets/02.Scripts/Item/CombatItemInventoryUi.cs index 82e28e91b..115b1017c 100644 --- a/BlueWater/Assets/02.Scripts/Item/CombatItemInventoryUi.cs +++ b/BlueWater/Assets/02.Scripts/Item/CombatItemInventoryUi.cs @@ -9,7 +9,11 @@ namespace BlueWaterProject { base.Close(); - FindAnyObjectByType()?.SwitchCurrentActionMap(CombatInput.COMBAT); + var playerInput = FindAnyObjectByType(); + if (playerInput != null && playerInput.enabled) + { + playerInput.SwitchCurrentActionMap(CombatInput.COMBAT); + } } protected override void InitAndUpdateInventory() diff --git a/BlueWater/Assets/02.Scripts/Item/OceanItemInventoryUi.cs b/BlueWater/Assets/02.Scripts/Item/OceanItemInventoryUi.cs index ef127b32b..3b939acec 100644 --- a/BlueWater/Assets/02.Scripts/Item/OceanItemInventoryUi.cs +++ b/BlueWater/Assets/02.Scripts/Item/OceanItemInventoryUi.cs @@ -9,7 +9,11 @@ namespace BlueWaterProject { base.Close(); - FindAnyObjectByType()?.SwitchCurrentActionMap(ShipPlayer.OCEAN); + var playerInput = FindAnyObjectByType(); + if (playerInput != null && playerInput.enabled) + { + playerInput.SwitchCurrentActionMap(ShipPlayer.OCEAN); + } } protected override void InitAndUpdateInventory() diff --git a/BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs b/BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs index ec19cf42d..992e76582 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs +++ b/BlueWater/Assets/02.Scripts/NewSkill/BaseSkill.cs @@ -1,4 +1,5 @@ using System; +using Pathfinding; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.AI; @@ -20,11 +21,15 @@ namespace BlueWaterProject [field: SerializeField] public Collider TargetCollider { get; set; } [field: SerializeField] public LayerMask TargetLayer { get; set; } [field: SerializeField] public SkillUi SkillUi { get; set; } + public IAnimationStateController IAnimationStateController { get; set; } + public IAstarAI Ai { get; set; } public Vector3 StartPosition { get; set; } public Vector3 PreviousDirection { get; set; } - public void InitInputData(Transform transform, Collider collider, Rigidbody rb, NavMeshAgent playerAgent, Transform visualLook, Animator animator, Collider target, LayerMask layer, SkillUi ui) + public void InitInputData(Transform transform, Collider collider, Rigidbody rb, NavMeshAgent playerAgent, + Transform visualLook,Animator animator, Collider target, LayerMask layer, SkillUi ui, + IAnimationStateController iAnimationStateController, IAstarAI ai) { Transform = transform; PlayerCollider = collider; @@ -35,6 +40,8 @@ namespace BlueWaterProject TargetCollider = target; TargetLayer = layer; SkillUi = ui; + IAnimationStateController = iAnimationStateController; + Ai = ai; } } @@ -78,27 +85,16 @@ namespace BlueWaterProject #endregion /*********************************************************************** - * Interfaces + * Init methods ***********************************************************************/ #region Interfaces - public abstract void ActivateSkill(params Action[] actions); - - public virtual bool EnableSkill() => enableSkill; - protected virtual void InitData() { BasicSetting(); HideIndicator(); } - #endregion - - /*********************************************************************** - * Methods - ***********************************************************************/ - #region Methods - protected virtual void BasicSetting() { if (isUsingIndicator && indicator) @@ -108,7 +104,7 @@ namespace BlueWaterProject indicator.material.SetFloat(FillHash, 0f); } } - + protected virtual void HideIndicator() { if (isUsingIndicator && indicator) @@ -128,5 +124,15 @@ namespace BlueWaterProject } #endregion + + /*********************************************************************** + * Methods + ***********************************************************************/ + #region Methods + + public virtual bool EnableSkill() => enableSkill; + public abstract void ActivateSkill(params Action[] actions); + + #endregion } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/LineRush.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/BoolCharge.cs similarity index 61% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/LineRush.cs rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/BoolCharge.cs index dc666ab74..829366897 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/LineRush.cs +++ b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/BoolCharge.cs @@ -7,7 +7,7 @@ using UnityEngine; // ReSharper disable once CheckNamespace namespace RhinocerosSkill { - public class LineRush : SkillBase + public class BoolCharge : BaseSkill { [Title("추가 옵션")] [SerializeField] private bool isDrawingGizmo = true; @@ -15,12 +15,8 @@ namespace RhinocerosSkill [SerializeField] private float rushSpeed = 15f; [SerializeField] private float rushOffset = 3f; - private bool isUsingSkill; - private Vector3 startPosition; - private float distanceToTarget; - private Vector3 direction; private RaycastHit[] hits; - private bool isAttacked; + private bool isUsingSkill; private void OnDrawGizmos() { @@ -36,21 +32,6 @@ namespace RhinocerosSkill } } - public override void ActivateSkill(params Action[] actions) - { - ReadySkill = false; - SkillInputData.PlayerAnimator.SetBool("isLineRush", true); - CoolDown(Cooldown, () => ReadySkill = true); - StartCoroutine(SkillCoroutine(actions)); - } - - public override bool EnableSkill() - { - if (!ReadySkill) return false; - - return true; - } - protected override void BasicSetting() { base.BasicSetting(); @@ -58,32 +39,49 @@ namespace RhinocerosSkill hits = new RaycastHit[5]; } + public override void ActivateSkill(params Action[] actions) + { + enableSkill = false; + + StartCoroutine(SkillCoroutine(actions)); + } + private IEnumerator SkillCoroutine(params Action[] actions) { - while (!SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("LineRush")) + var iAnimationStateController = SkillInputData.IAnimationStateController; + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, 0); + + var animationStarted = false; + yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(RhinocerosAnimationName.BULL_CHARGE, + success => animationStarted = success)); + + if (!animationStarted) { - yield return null; + EndSkill(0, actions[0]); + yield break; } + iAnimationStateController.ResetAnimationSpeed(); isUsingSkill = true; - isAttacked = false; - startPosition = SkillInputData.PlayerRb.position; + var isAttacked = false; + var startPosition = SkillInputData.PlayerRb.position; var vectorToTarget = SkillInputData.TargetCollider.transform.position - startPosition; vectorToTarget.y = 0f; - direction = vectorToTarget.normalized; - distanceToTarget = vectorToTarget.magnitude + rushOffset; + var targetDirection = vectorToTarget.normalized; + var targetDistance = vectorToTarget.magnitude + rushOffset; + //var endPosition = startPosition + targetDirection * targetDistance; - transform.position = startPosition; - transform.localScale = new Vector3(width, 6f, distanceToTarget * 2); - var angle = Mathf.Atan2(direction.x, direction.z) * Mathf.Rad2Deg; + transform.position = startPosition + Vector3.up * 3f; + transform.localScale = new Vector3(width, 6f, targetDistance * 2); + var angle = Mathf.Atan2(targetDirection.x, targetDirection.z) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, angle, 0); actions[1].Invoke(); ShowIndicator(); var elapsedTime = 0f; - var fill = 1 / CastingTime; - while (elapsedTime < CastingTime) + var fill = 1 / SkillData.CastingTime; + while (elapsedTime < SkillData.CastingTime) { elapsedTime += Time.deltaTime; @@ -98,39 +96,35 @@ namespace RhinocerosSkill HideIndicator(); - SkillInputData.PlayerAgent.enabled = false; - SkillInputData.PlayerRb.isKinematic = false; - - var timeToReachTarget = distanceToTarget / rushSpeed; - elapsedTime = 0f; - + var timeToReachTarget = targetDistance / rushSpeed; var capsuleCollider = (CapsuleCollider)SkillInputData.PlayerCollider; var capsuleRadius = capsuleCollider.radius; - while (elapsedTime < timeToReachTarget) + elapsedTime = 0f; + while (elapsedTime <= timeToReachTarget) { - SkillInputData.PlayerRb.velocity = direction * rushSpeed; elapsedTime += Time.deltaTime; + SkillInputData.PlayerRb.velocity = targetDirection * rushSpeed; var playerPosition = SkillInputData.PlayerRb.position; var point1 = playerPosition + Vector3.up * capsuleRadius; var point2 = playerPosition + Vector3.up * (capsuleCollider.height - capsuleRadius); - var maxSize = Physics.CapsuleCastNonAlloc(point1, point2, capsuleRadius, direction, hits, + var hitCount = Physics.CapsuleCastNonAlloc(point1, point2, capsuleRadius, targetDirection, hits, 0f, SkillInputData.TargetLayer, QueryTriggerInteraction.Ignore); - for (var i = 0; i < maxSize; i++) + for (var i = 0; i < hitCount; i++) { if (!isAttacked) { var iDamageable = hits[i].transform.GetComponent(); - iDamageable?.TakeDamage(Damage); + iDamageable?.TakeDamage(SkillData.Damage); isAttacked = true; - var iCombatable = hits[i].transform.GetComponent(); - if (iCombatable != null) + var combatStatus = hits[i].transform.GetComponent(); + if (combatStatus != null) { - var targetToVector = hits[i].transform.position - SkillInputData.PlayerRb.position; + var targetToVector = hits[i].transform.position - SkillInputData.Transform.position; targetToVector.y = 0f; var hitDirection = targetToVector.normalized; var cross = Vector3.Cross(hitDirection, transform.forward); @@ -138,23 +132,27 @@ namespace RhinocerosSkill ? Quaternion.Euler(0, -90, 0) * transform.forward : Quaternion.Euler(0, 90, 0) * transform.forward; - iCombatable.DisableMove(0.05f); - iCombatable.AddForceToDirection(addForceDirection, 30f); + combatStatus.Stun(0.05f); + combatStatus.GetComponent().AddForce(addForceDirection * 30f, ForceMode.Impulse); } } } yield return null; } - - SkillInputData.PlayerRb.velocity = Vector3.zero; - SkillInputData.PlayerAgent.enabled = true; - SkillInputData.PlayerRb.isKinematic = true; - - actions[0].Invoke(); + SkillInputData.PlayerRb.velocity = Vector3.zero; + EndSkill(SkillData.Cooldown, actions[0]); + } + + private void EndSkill(float cooldown, Action action) + { isUsingSkill = false; - SkillInputData.PlayerAnimator.SetBool("isLineRush", false); + + SkillInputData.IAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, -1); + + StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true)); + action?.Invoke(); } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/LineRush.cs.meta b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/BoolCharge.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/LineRush.cs.meta rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/BoolCharge.cs.meta diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs deleted file mode 100644 index 256b8cc79..000000000 --- a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System; -using System.Collections; -using BlueWaterProject; -using Sirenix.OdinInspector; -using UnityEngine; - -// ReSharper disable once CheckNamespace -namespace RhinocerosSkill -{ - public class HammerAttack : SkillBase - { - [Title("추가 옵션")] - [SerializeField] private float hammerOffset = 3f; - - private Collider[] hitColliders; - - public override void ActivateSkill(params Action[] actions) - { - ReadySkill = false; - SkillInputData.PlayerAnimator.SetTrigger("isHammerAttack"); - CoolDown(Cooldown, () => ReadySkill = true); - StartCoroutine(SkillCoroutine(actions)); - } - - public override bool EnableSkill() - { - if (!ReadySkill) return false; - - return true; - } - - protected override void BasicSetting() - { - base.BasicSetting(); - - hitColliders = new Collider[5]; - } - - private IEnumerator SkillCoroutine(params Action[] actions) - { - while (!SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("HammerAttack")) - { - yield return null; - } - - var skillPlayerPosition = SkillInputData.PlayerCollider.transform.position; - var targetPosition = SkillInputData.TargetCollider.transform.position; - var targetToDirection = (targetPosition - skillPlayerPosition).normalized; - transform.position = skillPlayerPosition + targetToDirection * hammerOffset; - transform.localScale = Vector3.one * (Range * 2f); - - actions[1].Invoke(); - ShowIndicator(); - - var elapsedTime = 0f; - var fill = 1 / CastingTime; - while (elapsedTime < CastingTime) - { - elapsedTime += Time.deltaTime; - - if (isUsingIndicator && indicator) - { - var fillValue = indicator.material.GetFloat(FillHash) + Time.deltaTime * fill; - indicator.material.SetFloat(FillHash, fillValue); - } - - yield return null; - } - - var maxSize = Physics.OverlapSphereNonAlloc(transform.position, Range, hitColliders, SkillInputData.TargetLayer); - for (var i = 0; i < maxSize; i++) - { - var iDamageable = hitColliders[i].GetComponent(); - iDamageable?.TakeDamage(Damage); - - var iCombatable = hitColliders[i].GetComponent(); - if (iCombatable != null) - { - var targetToVector = hitColliders[i].transform.position - transform.position; - targetToVector.y = 0f; - var direction = targetToVector.normalized; - iCombatable.DisableMove(0.05f); - iCombatable.AddForceToDirection(direction, 20f); - } - } - - HideIndicator(); - - while (SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("HammerAttack") && - SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1.0f) - { - yield return null; - } - actions[0].Invoke(); - } - } -} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs new file mode 100644 index 000000000..c8d49ee0a --- /dev/null +++ b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections; +using BlueWaterProject; +using Sirenix.OdinInspector; +using UnityEngine; + +// ReSharper disable once CheckNamespace +namespace RhinocerosSkill +{ + public class HammerSlam : BaseSkill + { + [Title("추가 옵션")] + [SerializeField] private float hammerOffset = 3f; + + private Collider[] hitColliders; + + protected override void BasicSetting() + { + base.BasicSetting(); + + hitColliders = new Collider[5]; + } + + public override bool EnableSkill() + { + if (!enableSkill) return false; + + var targetDistance = Vector3.Distance(SkillInputData.Transform.position, + SkillInputData.TargetCollider.transform.position); + return targetDistance <= SkillData.Range + hammerOffset; + } + + public override void ActivateSkill(params Action[] actions) + { + enableSkill = false; + + StartCoroutine(SkillCoroutine(actions)); + } + + private IEnumerator SkillCoroutine(params Action[] actions) + { + var iAnimationStateController = SkillInputData.IAnimationStateController; + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, 1); + + var animationStarted = false; + yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(RhinocerosAnimationName.HAMMER_SLAM, + success => animationStarted = success)); + + if (!animationStarted) + { + EndSkill(0, actions[0]); + yield break; + } + + var startPosition = SkillInputData.Transform.position; + var targetPosition = SkillInputData.TargetCollider.transform.position; + var vectorToTarget = targetPosition - startPosition; + vectorToTarget.y = 0f; + var targetToDirection = vectorToTarget.normalized; + transform.position = startPosition + targetToDirection * hammerOffset; + transform.localScale = Vector3.one * (SkillData.Range * 2f); + + actions[1].Invoke(); + ShowIndicator(); + + var elapsedTime = 0f; + var fill = 1 / SkillData.CastingTime; + while (elapsedTime < SkillData.CastingTime) + { + elapsedTime += Time.deltaTime; + + if (isUsingIndicator && indicator) + { + var fillValue = indicator.material.GetFloat(FillHash) + Time.deltaTime * fill; + indicator.material.SetFloat(FillHash, fillValue); + } + + yield return null; + } + + var hitCount = Physics.OverlapSphereNonAlloc(transform.position, SkillData.Range, hitColliders, SkillInputData.TargetLayer); + for (var i = 0; i < hitCount; i++) + { + var iDamageable = hitColliders[i].GetComponent(); + iDamageable?.TakeDamage(SkillData.Damage); + + var combatStatus = hitColliders[i].transform.GetComponent(); + if (combatStatus != null) + { + var targetToVector = hitColliders[i].transform.position - transform.position; + targetToVector.y = 0f; + var direction = targetToVector.normalized; + combatStatus.Stun(0.05f); + combatStatus.GetComponent().AddForce(direction * 20f, ForceMode.Impulse); + } + } + + HideIndicator(); + + while (SkillInputData.IAnimationStateController.IsComparingCurrentAnimation(RhinocerosAnimationName.HAMMER_SLAM) + && SkillInputData.IAnimationStateController.GetCurrentAnimationNormalizedTime() <= 1f) + { + yield return null; + } + + EndSkill(SkillData.Cooldown, actions[0]); + } + + private void EndSkill(float cooldown, Action action) + { + SkillInputData.IAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, -1); + + StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true)); + action?.Invoke(); + } + } +} \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs.meta b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerAttack.cs.meta rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs.meta diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSwing.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/MeteorSwing.cs similarity index 66% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSwing.cs rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/MeteorSwing.cs index c05483c7c..fcb3ca121 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSwing.cs +++ b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/MeteorSwing.cs @@ -8,7 +8,7 @@ using UnityEngine.Rendering.Universal; // ReSharper disable once CheckNamespace namespace RhinocerosSkill { - public class HammerSwing : SkillBase + public class MeteorSwing : BaseSkill { [Title("추가 옵션")] [SerializeField] private bool isDrawingGizmo = true; @@ -20,7 +20,8 @@ namespace RhinocerosSkill [SerializeField] private float projectileDamage = 10f; [SerializeField] private float projectileAngle = 90f; [SerializeField] private float projectileSpeed = 500f; - + + private Transform particleInstantiateLocation; private Collider[] hitColliders; private bool isUsingSkill; @@ -30,7 +31,7 @@ namespace RhinocerosSkill Gizmos.color = Color.red; var skillPosition = transform.position; - Gizmos.DrawWireSphere(skillPosition, Range); + Gizmos.DrawWireSphere(skillPosition, SkillData.Range); if (SkillInputData != null && SkillInputData.TargetCollider != null) { @@ -40,26 +41,11 @@ namespace RhinocerosSkill var rightBoundary = Quaternion.Euler(0, angle / 2, 0) * forward; Gizmos.color = Color.yellow; - Gizmos.DrawLine(skillPlayerPosition, skillPlayerPosition + leftBoundary * Range); - Gizmos.DrawLine(skillPlayerPosition, skillPlayerPosition + rightBoundary * Range); + Gizmos.DrawLine(skillPlayerPosition, skillPlayerPosition + leftBoundary * SkillData.Range); + Gizmos.DrawLine(skillPlayerPosition, skillPlayerPosition + rightBoundary * SkillData.Range); } } - public override void ActivateSkill(params Action[] actions) - { - ReadySkill = false; - SkillInputData.PlayerAnimator.SetTrigger("isHammerSwing"); - CoolDown(Cooldown, () => ReadySkill = true); - StartCoroutine(SkillCoroutine(actions)); - } - - public override bool EnableSkill() - { - if (!ReadySkill) return false; - - return true; - } - protected override void BasicSetting() { if (isUsingIndicator && indicator) @@ -72,31 +58,46 @@ namespace RhinocerosSkill hitColliders = new Collider[5]; } + + public override void ActivateSkill(params Action[] actions) + { + enableSkill = false; + + StartCoroutine(SkillCoroutine(actions)); + } private IEnumerator SkillCoroutine(params Action[] actions) { - while (!SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("HammerSwing")) + var iAnimationStateController = SkillInputData.IAnimationStateController; + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, 2); + + var animationStarted = false; + yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(RhinocerosAnimationName.METEOR_SWING, + success => animationStarted = success)); + + if (!animationStarted) { - yield return null; + EndSkill(0, actions[0]); + yield break; } isUsingSkill = true; - var skillPlayerPosition = SkillInputData.PlayerRb.position; + var startPosition = SkillInputData.Transform.position; var targetPosition = SkillInputData.TargetCollider.transform.position; - var targetToVector = targetPosition - skillPlayerPosition; + var targetToVector = targetPosition - startPosition; targetToVector.y = 0f; var targetToDirection = targetToVector.normalized; - transform.position = skillPlayerPosition; + transform.position = startPosition; var yAngle = Mathf.Atan2(targetToDirection.x, targetToDirection.z) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, yAngle, 0); - transform.localScale = Vector3.one * (Range * 2f); + transform.localScale = Vector3.one * (SkillData.Range * 2f); actions[1].Invoke(); ShowIndicator(); var elapsedTime = 0f; - var fill = 1 / CastingTime; - while (elapsedTime < CastingTime) + var fill = 1 / SkillData.CastingTime; + while (elapsedTime < SkillData.CastingTime) { elapsedTime += Time.deltaTime; @@ -109,8 +110,8 @@ namespace RhinocerosSkill yield return null; } - var maxSize = Physics.OverlapSphereNonAlloc(transform.position, Range, hitColliders, SkillInputData.TargetLayer); - for (var i = 0; i < maxSize; i++) + var hitCount = Physics.OverlapSphereNonAlloc(transform.position, SkillData.Range, hitColliders, SkillInputData.TargetLayer); + for (var i = 0; i < hitCount; i++) { var hitToVector = hitColliders[i].transform.position - transform.position; hitToVector.y = 0f; @@ -120,13 +121,13 @@ namespace RhinocerosSkill if (angleToTarget <= angle * 0.5f) { var iDamageable = hitColliders[i].GetComponent(); - iDamageable?.TakeDamage(Damage); + iDamageable?.TakeDamage(SkillData.Damage); - var iCombatable = hitColliders[i].GetComponent(); - if (iCombatable != null) + var combatStatus = hitColliders[i].transform.GetComponent(); + if (combatStatus != null) { - iCombatable.DisableMove(0.1f); - iCombatable.AddForceToDirection(attackDirection, 15f); + combatStatus.Stun(0.1f); + combatStatus.GetComponent().AddForce(attackDirection * 15f, ForceMode.Impulse); } } } @@ -135,20 +136,29 @@ namespace RhinocerosSkill var startAngle = yAngle - projectileAngle * 0.5f; var angleStep = projectileAngle / (projectileNumber - 1); + particleInstantiateLocation ??= FindAnyObjectByType().ParticleInstantiateLocation; for (var i = 0; i < projectileNumber; i++) { var currentAngle = startAngle + angleStep * i; var rotation = Quaternion.Euler(0, currentAngle, 0); - var projectile = Instantiate(projectilePrefab, transform.position + Vector3.up, rotation); + var projectile = Instantiate(projectilePrefab, transform.position + Vector3.up, rotation, particleInstantiateLocation); var particleWeapon = projectile.GetComponent(); particleWeapon.SetPower(projectileDamage); particleWeapon.Rb.AddForce(particleWeapon.transform.forward * projectileSpeed); } - actions[0].Invoke(); - + EndSkill(SkillData.Cooldown, actions[0]); + } + + private void EndSkill(float cooldown, Action action) + { isUsingSkill = false; + + SkillInputData.IAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, -1); + + StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true)); + action?.Invoke(); } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSwing.cs.meta b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/MeteorSwing.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSwing.cs.meta rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/MeteorSwing.cs.meta diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/EarthquakeWave.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SeismicThrust.cs similarity index 65% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/EarthquakeWave.cs rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SeismicThrust.cs index 280ebe481..e646113f4 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/EarthquakeWave.cs +++ b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SeismicThrust.cs @@ -7,13 +7,14 @@ using UnityEngine; // ReSharper disable once CheckNamespace namespace RhinocerosSkill { - public class EarthquakeWave : SkillBase + public class SeismicThrust : BaseSkill { [Title("추가 옵션")] [SerializeField] private bool isDrawingGizmo = true; [SerializeField] private float width = 3f; [SerializeField] private GameObject earthquakeParticlePrefab; - + + private Transform particleInstantiateLocation; private Vector3 startPosition; private Vector3 halfScale; private RaycastHit[] hits; @@ -29,35 +30,37 @@ namespace RhinocerosSkill Gizmos.matrix = Matrix4x4.identity; } - public override void ActivateSkill(params Action[] actions) - { - ReadySkill = false; - CoolDown(Cooldown, () => ReadySkill = true); - StartCoroutine(SkillCoroutine(actions)); - } - - public override bool EnableSkill() - { - if (!ReadySkill) return false; - - return true; - } - protected override void BasicSetting() { base.BasicSetting(); hits = new RaycastHit[5]; } + + public override bool EnableSkill() + { + if (!enableSkill) return false; + + var targetDistance = Vector3.Distance(SkillInputData.Transform.position, + SkillInputData.TargetCollider.transform.position); + return targetDistance <= SkillData.Range; + } + + public override void ActivateSkill(params Action[] actions) + { + enableSkill = false; + + StartCoroutine(SkillCoroutine(actions)); + } private IEnumerator SkillCoroutine(params Action[] actions) { isUsingSkill = true; - transform.position = SkillInputData.PlayerRb.position; + transform.position = SkillInputData.Transform.position; var angle = Mathf.Atan2(SkillInputData.PreviousDirection.x, SkillInputData.PreviousDirection.z) * Mathf.Rad2Deg; transform.rotation = Quaternion.Euler(0, angle, 0); - transform.localScale = new Vector3(width, 6f, Range * 2); + transform.localScale = new Vector3(width, 6f, SkillData.Range * 2); var myLocalScale = transform.localScale; halfScale = new Vector3(myLocalScale.x * 0.5f, myLocalScale.y * 0.5f, myLocalScale.z * 0.25f); @@ -65,8 +68,8 @@ namespace RhinocerosSkill ShowIndicator(); var elapsedTime = 0f; - var fill = 1 / CastingTime; - while (elapsedTime < CastingTime) + var fill = 1 / SkillData.CastingTime; + while (elapsedTime < SkillData.CastingTime) { elapsedTime += Time.deltaTime; @@ -79,28 +82,33 @@ namespace RhinocerosSkill yield return null; } - Instantiate(earthquakeParticlePrefab, transform.position + transform.forward * 4f, transform.rotation); + particleInstantiateLocation ??= FindAnyObjectByType().ParticleInstantiateLocation; + Instantiate(earthquakeParticlePrefab, transform.position + transform.forward * 4f, transform.rotation, particleInstantiateLocation); startPosition = transform.position + transform.forward * halfScale.z; var maxSize = Physics.BoxCastNonAlloc(startPosition, halfScale, transform.forward, hits, transform.rotation, 0f, SkillInputData.TargetLayer, QueryTriggerInteraction.Ignore); for (var i = 0; i < maxSize; i++) { var iDamageable = hits[i].transform.GetComponent(); - iDamageable?.TakeDamage(Damage); + iDamageable?.TakeDamage(SkillData.Damage); - var iCombatable = hits[i].transform.GetComponent(); - if (iCombatable != null) + var combatStatus = hits[i].transform.GetComponent(); + if (combatStatus != null) { - iCombatable.DisableMove(0.15f); - iCombatable.AddForceToDirection(transform.forward, 20f); + combatStatus.Stun(0.15f); + combatStatus.SlowMoveSpeed(5f, 0.5f); + combatStatus.GetComponent().AddForce(transform.forward * 20f, ForceMode.Impulse); } } HideIndicator(); - - actions[0].Invoke(); - - isUsingSkill = false; + EndSkill(SkillData.Cooldown, actions[0]); + } + + private void EndSkill(float cooldown, Action action) + { + StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true)); + action?.Invoke(); } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/EarthquakeWave.cs.meta b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SeismicThrust.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/EarthquakeWave.cs.meta rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SeismicThrust.cs.meta diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/JumpSmash.cs b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SkyfallSmash.cs similarity index 66% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/JumpSmash.cs rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SkyfallSmash.cs index 5134077d7..86b050fb2 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/JumpSmash.cs +++ b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SkyfallSmash.cs @@ -8,7 +8,7 @@ using UnityEngine.Rendering.Universal; // ReSharper disable once CheckNamespace namespace RhinocerosSkill { - public class JumpSmash : SkillBase + public class SkyfallSmash : BaseSkill { [Title("추가 옵션")] [SerializeField] private float upTime = 0.1f; @@ -23,24 +23,9 @@ namespace RhinocerosSkill { if (SkillInputData.TargetCollider) { - SkillInputData.TargetCollider.GetComponent().StopStun(); + SkillInputData.TargetCollider.GetComponent().EndStun(); } } - - public override void ActivateSkill(params Action[] actions) - { - ReadySkill = false; - SkillInputData.PlayerAnimator.SetBool("isJump", true); - CoolDown(Cooldown, () => ReadySkill = true); - StartCoroutine(SkillCoroutine(actions)); - } - - public override bool EnableSkill() - { - if (!ReadySkill) return false; - - return true; - } protected override void BasicSetting() { @@ -64,6 +49,24 @@ namespace RhinocerosSkill hitColliders = new Collider[5]; } + protected override void ShowIndicator() + { + if (isUsingIndicator) + { + if (indicator) + { + indicator.material.SetFloat(FillHash, 0); + indicator.enabled = true; + } + + if (stunIndicator) + { + stunIndicator.material.SetFloat(FillHash, 0); + stunIndicator.enabled = true; + } + } + } + protected override void HideIndicator() { if (isUsingIndicator) @@ -82,38 +85,43 @@ namespace RhinocerosSkill } } - protected override void ShowIndicator() + public override bool EnableSkill() { - if (isUsingIndicator) - { - if (indicator) - { - indicator.material.SetFloat(FillHash, 0); - indicator.enabled = true; - } - - if (stunIndicator) - { - stunIndicator.material.SetFloat(FillHash, 0); - stunIndicator.enabled = true; - } - } + if (!enableSkill) return false; + + var targetDistance = Vector3.Distance(SkillInputData.Transform.position, + SkillInputData.TargetCollider.transform.position); + return targetDistance > 7f; + } + + public override void ActivateSkill(params Action[] actions) + { + enableSkill = false; + + StartCoroutine(SkillCoroutine(actions)); } private IEnumerator SkillCoroutine(params Action[] actions) { - while (!SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Jump")) + var iAnimationStateController = SkillInputData.IAnimationStateController; + iAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, 4); + + var animationStarted = false; + yield return StartCoroutine(iAnimationStateController.WaitForAnimationToRun(RhinocerosAnimationName.SKY_FALL_JUMP, + success => animationStarted = success)); + + if (!animationStarted) + { + EndSkill(0, actions[0]); + yield break; + } + + while (SkillInputData.IAnimationStateController.IsComparingCurrentAnimation(RhinocerosAnimationName.SKY_FALL_JUMP) + && SkillInputData.IAnimationStateController.GetCurrentAnimationNormalizedTime() <= 1f) { yield return null; } - while (SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).IsName("Jump") && - SkillInputData.PlayerAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime < 1.0f) - { - yield return null; - } - - SkillInputData.PlayerAgent.enabled = false; SkillInputData.PlayerRb.useGravity = false; var elapsedTime = 0f; @@ -123,18 +131,18 @@ namespace RhinocerosSkill while (elapsedTime < upTime) { elapsedTime += Time.deltaTime; - SkillInputData.PlayerRb.position = Vector3.Lerp(startPosition, endPosition, elapsedTime / upTime); + SkillInputData.Transform.position = Vector3.Lerp(startPosition, endPosition, elapsedTime / upTime); yield return null; } - SkillInputData.PlayerRb.position = endPosition; + SkillInputData.Transform.position = endPosition; yield return new WaitForSeconds(waitTime); var targetPosition = SkillInputData.TargetCollider.transform.position; transform.position = targetPosition; - transform.localScale = Vector3.one * (Range * 2f); + transform.localScale = Vector3.one * (SkillData.Range * 2f); stunIndicator.transform.localScale = Vector3.one * 4f; startPosition = targetPosition + Vector3.up * 15f; @@ -143,8 +151,8 @@ namespace RhinocerosSkill ShowIndicator(); elapsedTime = 0f; - var fill = 1 / CastingTime; - while (elapsedTime < CastingTime) + var fill = 1 / SkillData.CastingTime; + while (elapsedTime < SkillData.CastingTime) { elapsedTime += Time.deltaTime; @@ -164,40 +172,37 @@ namespace RhinocerosSkill yield return null; } - - //IgnoreCollision(true); elapsedTime = 0f; while (elapsedTime < downTime) { elapsedTime += Time.deltaTime; - SkillInputData.PlayerRb.position = Vector3.Lerp(startPosition, endPosition, elapsedTime / downTime); + SkillInputData.Transform.position = Vector3.Lerp(startPosition, endPosition, elapsedTime / downTime); yield return null; } VisualFeedbackManager.Inst.CameraShake(CameraManager.Inst.CombatCamera.BaseCombatCamera, 3f, 1f); - SkillInputData.PlayerRb.useGravity = true; - SkillInputData.PlayerAgent.enabled = true; - SkillInputData.PlayerRb.position = endPosition; + SkillInputData.Transform.position = endPosition; + SkillInputData.PlayerRb.useGravity = true; HideIndicator(); - var maxSize = Physics.OverlapSphereNonAlloc(transform.position, Range, hitColliders, SkillInputData.TargetLayer); - for (var i = 0; i < maxSize; i++) + var hitCount = Physics.OverlapSphereNonAlloc(transform.position, SkillData.Range, hitColliders, SkillInputData.TargetLayer); + for (var i = 0; i < hitCount; i++) { var iDamageable = hitColliders[i].GetComponent(); - iDamageable?.TakeDamage(Damage); + iDamageable?.TakeDamage(SkillData.Damage); } - var stunRange = Range * 2f; - maxSize = Physics.OverlapSphereNonAlloc(transform.position, stunRange, hitColliders, SkillInputData.TargetLayer); - for (var i = 0; i < maxSize; i++) + var stunRange = SkillData.Range * 2f; + hitCount = Physics.OverlapSphereNonAlloc(transform.position, stunRange, hitColliders, SkillInputData.TargetLayer); + for (var i = 0; i < hitCount; i++) { - var iCombatable = hitColliders[i].GetComponent(); - if (iCombatable != null) + var combatStatus = hitColliders[i].transform.GetComponent(); + if (combatStatus != null) { var targetToVector = hitColliders[i].transform.position - transform.position; targetToVector.y = 0f; @@ -207,20 +212,21 @@ namespace RhinocerosSkill var powerCoefficient = stunRange - distance; var addForcePower = powerCoefficient / stunRange * 10f; - iCombatable.Stun(stunTime); - iCombatable.AddForceToDirection(direction, addForcePower); + combatStatus.Stun(stunTime); + combatStatus.GetComponent().AddForce(direction * addForcePower, ForceMode.Impulse); } } - SkillInputData.PlayerAnimator.SetBool("isJump", false); - SkillInputData.PlayerAnimator.SetTrigger("isSmash"); - - actions[0].Invoke(); + EndSkill(SkillData.Cooldown, actions[0]); } - private void IgnoreCollision(bool value) + private void EndSkill(float cooldown, Action action) { - Physics.IgnoreCollision(SkillInputData.PlayerCollider, SkillInputData.TargetCollider, value); + SkillInputData.PlayerRb.useGravity = true; + SkillInputData.IAnimationStateController.SetAnimationParameter(RhinocerosAnimationParameter.SKILL_INDEX, -1); + + StartCoroutine(Utils.CoolDown(cooldown, () => enableSkill = true)); + action?.Invoke(); } } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/JumpSmash.cs.meta b/BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SkyfallSmash.cs.meta similarity index 100% rename from BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/JumpSmash.cs.meta rename to BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/SkyfallSmash.cs.meta diff --git a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/BullCharge.asset b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/BullCharge.asset index 7c0398a99..9c506887f 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/BullCharge.asset +++ b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/BullCharge.asset @@ -14,7 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: "\uD669\uC18C \uB3CC\uC9C4" k__BackingField: - k__BackingField: 10 + k__BackingField: 1 k__BackingField: 6 k__BackingField: 0 k__BackingField: 1 diff --git a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/HammerSlam.asset b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/HammerSlam.asset index d4ddda661..1f6f2c2aa 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/HammerSlam.asset +++ b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/HammerSlam.asset @@ -14,7 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: "\uB9DD\uCE58 \uAC15\uD0C0" k__BackingField: - k__BackingField: 10 + k__BackingField: 1 k__BackingField: 3 k__BackingField: 3.5 k__BackingField: 1 diff --git a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/MeteorSwing.asset b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/MeteorSwing.asset index 07e49d01f..1b36b874a 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/MeteorSwing.asset +++ b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/MeteorSwing.asset @@ -14,7 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: "\uC720\uC131 \uD718\uB450\uB974\uAE30" k__BackingField: - k__BackingField: 10 + k__BackingField: 1 k__BackingField: 10 k__BackingField: 3 k__BackingField: 1 diff --git a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SeismicThrust.asset b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SeismicThrust.asset index 3be403aa9..ae9082554 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SeismicThrust.asset +++ b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SeismicThrust.asset @@ -14,7 +14,7 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: "\uC9C0\uC9C4 \uD30C\uB3D9" k__BackingField: - k__BackingField: 10 + k__BackingField: 1 k__BackingField: 15 k__BackingField: 12 k__BackingField: 0.5 diff --git a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SkyfallSmash.asset b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SkyfallSmash.asset index 94f41bdd3..fe606fda8 100644 --- a/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SkyfallSmash.asset +++ b/BlueWater/Assets/02.Scripts/NewSkill/So/Rhinoceros/SkyfallSmash.asset @@ -10,11 +10,11 @@ MonoBehaviour: m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 134e3d2eb4ca75b4bb18832c2b875454, type: 3} - m_Name: SkyfallSmash + m_Name: SkyFallSmash m_EditorClassIdentifier: k__BackingField: "\uCC3D\uACF5\uC758 \uB099\uD558" k__BackingField: - k__BackingField: 30 + k__BackingField: 2 k__BackingField: 20 k__BackingField: 5 k__BackingField: 1 diff --git a/BlueWater/Assets/02.Scripts/RhinocerosBossMapController.cs b/BlueWater/Assets/02.Scripts/RhinocerosBossMapController.cs index 247f505a9..3f81cf6e5 100644 --- a/BlueWater/Assets/02.Scripts/RhinocerosBossMapController.cs +++ b/BlueWater/Assets/02.Scripts/RhinocerosBossMapController.cs @@ -1,16 +1,14 @@ +using System.Collections; using BlueWaterProject; -using Sirenix.OdinInspector; using UnityEngine; // ReSharper disable once CheckNamespace public class RhinocerosBossMapController : BossMapController { - // 추가 설정 - [Title("추가 설정")] - public override void InitBossMap() { base.InitBossMap(); + DataManager.Inst.CurrentSaveStage = SaveStage.RHINOCEROS; InstantiateRhinoceros(bossSpawnTransform.position); } @@ -24,4 +22,33 @@ public class RhinocerosBossMapController : BossMapController return instantiateBoss; } + + public override void DieBoss() + { + StartCoroutine(nameof(DieBossCoroutine)); + } + + private IEnumerator DieBossCoroutine() + { + VisualFeedbackManager.Inst.SetBaseTimeScale(0.1f); + CombatUiManager.Inst.FadeInOut(); + + var elapsedTime = 0f; + while (elapsedTime <= 3f) + { + elapsedTime += Time.unscaledDeltaTime; + yield return null; + } + VisualFeedbackManager.Inst.SetBaseTimeScale(1f); + + elapsedTime = 0f; + while (elapsedTime <= 2f) + { + elapsedTime += Time.unscaledDeltaTime; + yield return null; + } + + AllDestroyBoss(); + CombatUiManager.Inst.ClearPopupUi.Open(); + } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/SlimeBossMapController.cs b/BlueWater/Assets/02.Scripts/SlimeBossMapController.cs index c81d2ac9b..acdebfdfb 100644 --- a/BlueWater/Assets/02.Scripts/SlimeBossMapController.cs +++ b/BlueWater/Assets/02.Scripts/SlimeBossMapController.cs @@ -1,4 +1,3 @@ -using System.Collections; using BlueWaterProject; using Sirenix.OdinInspector; using UnityEngine; @@ -16,6 +15,7 @@ public class SlimeBossMapController : BossMapController public override void InitBossMap() { base.InitBossMap(); + DataManager.Inst.CurrentSaveStage = SaveStage.SLIME; InstantiateSlime(bossSpawnTransform.position, 1, true); } @@ -41,33 +41,4 @@ public class SlimeBossMapController : BossMapController instantiateBossLeft.AddForce(leftSplitDirection, splitPower, ForceMode.Impulse); instantiateBossRight.AddForce(rightSplitDirection, splitPower, ForceMode.Impulse); } - - public void DieRabbit() - { - StartCoroutine(nameof(DieRabbitCoroutine)); - } - - private IEnumerator DieRabbitCoroutine() - { - VisualFeedbackManager.Inst.SetBaseTimeScale(0.1f); - AllDestroyBoss(); - CombatUiManager.Inst.FadeInOut(); - - var elapsedTime = 0f; - while (elapsedTime <= 3f) - { - elapsedTime += Time.unscaledDeltaTime; - yield return null; - } - VisualFeedbackManager.Inst.SetBaseTimeScale(1f); - - elapsedTime = 0f; - while (elapsedTime <= 2f) - { - elapsedTime += Time.unscaledDeltaTime; - yield return null; - } - - CombatUiManager.Inst.ClearPopupUi.Open(); - } } \ No newline at end of file diff --git a/BlueWater/Assets/02.Scripts/Ui/ClearPopupUi.cs b/BlueWater/Assets/02.Scripts/Ui/ClearPopupUi.cs index c8a78b30b..c85313458 100644 --- a/BlueWater/Assets/02.Scripts/Ui/ClearPopupUi.cs +++ b/BlueWater/Assets/02.Scripts/Ui/ClearPopupUi.cs @@ -1,15 +1,21 @@ +using System; using UnityEngine; using UnityEngine.InputSystem; +using UnityEngine.UI; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class ClearPopupUi : PopupUi { + [SerializeField] private Button moveNextStageButton; + public override void Open() { Time.timeScale = 0f; FindAnyObjectByType().enabled = false; + moveNextStageButton.interactable = (int)DataManager.Inst.CurrentSaveStage < Enum.GetValues(typeof(SaveStage)).Length - 1; + base.Open(); } diff --git a/BlueWater/Assets/02.Scripts/Ui/CombatMenuPopupUi.cs b/BlueWater/Assets/02.Scripts/Ui/CombatMenuPopupUi.cs index 2d98b3d3f..da171951f 100644 --- a/BlueWater/Assets/02.Scripts/Ui/CombatMenuPopupUi.cs +++ b/BlueWater/Assets/02.Scripts/Ui/CombatMenuPopupUi.cs @@ -11,7 +11,11 @@ namespace BlueWaterProject if (!CombatUiManager.Inst.IsPopupListEmpty()) return; - FindAnyObjectByType()?.SwitchCurrentActionMap(CombatInput.COMBAT); + var playerInput = FindAnyObjectByType(); + if (playerInput != null && playerInput.enabled) + { + playerInput.SwitchCurrentActionMap(CombatInput.COMBAT); + } } } } \ No newline at end of file diff --git a/BlueWater/Assets/05.Prefabs/Characters/Enemies/FieldBosses/Rhinoceros.prefab b/BlueWater/Assets/05.Prefabs/Characters/Enemies/FieldBosses/Rhinoceros.prefab index db00a7529..8fa36d7f2 100644 --- a/BlueWater/Assets/05.Prefabs/Characters/Enemies/FieldBosses/Rhinoceros.prefab +++ b/BlueWater/Assets/05.Prefabs/Characters/Enemies/FieldBosses/Rhinoceros.prefab @@ -11,8 +11,9 @@ GameObject: - component: {fileID: 8090463508496005930} - component: {fileID: 8142684666082997760} - component: {fileID: 1668494360487994466} - - component: {fileID: 1644346445915362573} - component: {fileID: 5660425300834808149} + - component: {fileID: 7016151840346596266} + - component: {fileID: 5720232464147060158} - component: {fileID: 4327795848059932565} m_Layer: 13 m_Name: Rhinoceros @@ -56,11 +57,11 @@ Rigidbody: m_Bits: 0 m_ExcludeLayers: serializedVersion: 2 - m_Bits: 0 + m_Bits: 33793783 m_ImplicitCom: 1 m_ImplicitTensor: 1 m_UseGravity: 1 - m_IsKinematic: 1 + m_IsKinematic: 0 m_Interpolate: 0 m_Constraints: 112 m_CollisionDetection: 0 @@ -79,7 +80,7 @@ CapsuleCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 1 + m_IsTrigger: 0 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 2 @@ -87,28 +88,6 @@ CapsuleCollider: m_Height: 3 m_Direction: 1 m_Center: {x: 0, y: 1.5, z: 0} ---- !u!195 &1644346445915362573 -NavMeshAgent: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1907803032604947452} - m_Enabled: 1 - m_AgentTypeID: -334000983 - m_Radius: 1.5 - m_Speed: 3 - m_Acceleration: 8 - avoidancePriority: 50 - m_AngularSpeed: 120 - m_StoppingDistance: 0 - m_AutoTraverseOffMeshLink: 1 - m_AutoBraking: 0 - m_AutoRepath: 1 - m_Height: 3 - m_BaseOffset: 0 - m_WalkableMask: 1 - m_ObstacleAvoidanceType: 4 --- !u!114 &5660425300834808149 MonoBehaviour: m_ObjectHideFlags: 0 @@ -121,7 +100,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8d7b55c7ecdb49a4a89fa5e6f9022861, type: 3} m_Name: m_EditorClassIdentifier: - startWhenEnabled: 1 + startWhenEnabled: 0 asynchronousLoad: 0 pauseWhenDisabled: 0 restartWhenComplete: 0 @@ -151,6 +130,76 @@ MonoBehaviour: Version: 1.7.7 gizmoViewMode: 2 showBehaviorDesignerGizmo: 0 +--- !u!114 &7016151840346596266 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907803032604947452} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 373b52eb9bf8c40f785bb6947a1aee66, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 1 + drawGizmos: 1 + detailedGizmos: 0 + startEndModifier: + addPoints: 0 + exactStartPoint: 3 + exactEndPoint: 3 + useRaycasting: 0 + mask: + serializedVersion: 2 + m_Bits: 4294967295 + useGraphRaycasting: 0 + traversableTags: -1 + tagPenalties: 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + graphMask: + value: 4 +--- !u!114 &5720232464147060158 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1907803032604947452} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f6eb1402c17e84a9282a7f0f62eb584f, type: 3} + m_Name: + m_EditorClassIdentifier: + version: 5 + radius: 1.5 + height: 3 + canMove: 1 + maxSpeed: 3 + gravity: {x: NaN, y: NaN, z: NaN} + groundMask: + serializedVersion: 2 + m_Bits: 8 + centerOffsetCompatibility: NaN + repathRateCompatibility: NaN + canSearchCompability: 0 + orientation: 0 + enableRotation: 0 + autoRepath: + mode: 2 + period: 0.5 + sensitivity: 10 + maximumPeriod: 2 + visualizeSensitivity: 0 + targetCompatibility: {fileID: 0} + maxAcceleration: 8 + rotationSpeed: 360 + slowdownDistance: 1 + pickNextWaypointDist: 1 + endReachedDistance: 0.5 + alwaysDrawGizmos: 1 + slowWhenNotFacingTarget: 1 + whenCloseToDestination: 0 + constrainInsideGraph: 0 --- !u!114 &4327795848059932565 MonoBehaviour: m_ObjectHideFlags: 0 @@ -164,29 +213,27 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: rb: {fileID: 8142684666082997760} - capsuleCollider: {fileID: 1668494360487994466} - agent: {fileID: 1644346445915362573} + col: {fileID: 1668494360487994466} behaviorTree: {fileID: 5660425300834808149} visualLook: {fileID: 695049024773443745} - animator: {fileID: 3402580928633681741} - spriteRenderer: {fileID: 8089310337301863899} - k__BackingField: Rhinoceros + k__BackingField: {fileID: 3402580928633681741} + flashWhiteSpriteRenderer: {fileID: 8089310337301863899} + mapController: {fileID: 0} + k__BackingField: "\uCF54\uBFD4\uC18C" k__BackingField: 500 - moveSpeed: 3 targetLayer: serializedVersion: 2 m_Bits: 512 flashWhiteTime: 0.1 skillList: - - {fileID: 302495082473197838, guid: 193b84f23515e2947ad12f1d574e6211, type: 3} - - {fileID: 1802435259650247748, guid: 62d1ce673ad01eb4197cabbcb20d42df, type: 3} - {fileID: 7494133249431652556, guid: ed19d66520ef01542a4316e58fc998aa, type: 3} + - {fileID: 302495082473197838, guid: 193b84f23515e2947ad12f1d574e6211, type: 3} - {fileID: 7312937513250846836, guid: 3353a318189ca914bba3a15574bf61fa, type: 3} + - {fileID: 1802435259650247748, guid: 62d1ce673ad01eb4197cabbcb20d42df, type: 3} - {fileID: 7464818668275774481, guid: 16ce2ff029904874782380a8bed90c58, type: 3} k__BackingField: 0 k__BackingField: {fileID: 0} - k__BackingField: 0 - isMoving: 0 + k__BackingField: 0 --- !u!1 &5250888242721872286 GameObject: m_ObjectHideFlags: 0 diff --git a/BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab b/BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab index 3e1e9ca12..13eef272b 100644 --- a/BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab +++ b/BlueWater/Assets/05.Prefabs/Characters/Players/CombatPlayer2D.prefab @@ -10294,3 +10294,4 @@ MonoBehaviour: k__BackingField: 0 k__BackingField: 0 slowColor: {r: 0.5921569, g: 0.9843137, b: 0.5882353, a: 1} + stunParticle: {fileID: 5631981413225627599} diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/LineRush.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/BullCharge.prefab similarity index 93% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/LineRush.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/BullCharge.prefab index 14388eca1..f0988a0aa 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/LineRush.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/BullCharge.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 720733940719378981} - component: {fileID: 7494133249431652556} m_Layer: 0 - m_Name: LineRush + m_Name: BullCharge m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -45,16 +45,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1f6a1d28ac8854842965166f68f3ab4b, type: 3} m_Name: m_EditorClassIdentifier: - k__BackingField: LineRush - k__BackingField: 1 - k__BackingField: 10 - k__BackingField: 6 - k__BackingField: 0 - k__BackingField: 1 - k__BackingField: 0 + k__BackingField: {fileID: 11400000, guid: a73bd420075994a4da31c17857a68079, + type: 2} + enableSkill: 1 isUsingIndicator: 1 indicator: {fileID: 3624644856654563365} k__BackingField: + k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/LineRush.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/BullCharge.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/LineRush.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/BullCharge.prefab.meta diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerAttack.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSlam.prefab similarity index 93% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerAttack.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSlam.prefab index 89eec6060..5070ac5d4 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerAttack.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSlam.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 2292981380021792930} - component: {fileID: 302495082473197838} m_Layer: 0 - m_Name: HammerAttack + m_Name: HammerSlam m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -45,16 +45,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7f2a50b72621aac4f9178db7ab02867e, type: 3} m_Name: m_EditorClassIdentifier: - k__BackingField: HammerAttack - k__BackingField: 1 - k__BackingField: 10 - k__BackingField: 3 - k__BackingField: 3.5 - k__BackingField: 1 - k__BackingField: 0 + k__BackingField: {fileID: 11400000, guid: fff709d3ddb3f204b8b06337919d0d93, + type: 2} + enableSkill: 1 isUsingIndicator: 1 indicator: {fileID: 7499300373520539281} k__BackingField: + k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerAttack.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSlam.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerAttack.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSlam.prefab.meta diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSwing.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/MeteorSwing.prefab similarity index 92% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSwing.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/MeteorSwing.prefab index d93e32f26..a651053f8 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSwing.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/MeteorSwing.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 2292981380021792930} - component: {fileID: 7312937513250846836} m_Layer: 0 - m_Name: HammerSwing + m_Name: MeteorSwing m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -45,16 +45,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0fde1b55379e6834585dfbadb4b7c0f2, type: 3} m_Name: m_EditorClassIdentifier: - k__BackingField: HammerSwing - k__BackingField: 1 - k__BackingField: 10 - k__BackingField: 10 - k__BackingField: 3 - k__BackingField: 1 - k__BackingField: 0 + k__BackingField: {fileID: 11400000, guid: a1e550fbbc57574438f4a11f19069b56, + type: 2} + enableSkill: 1 isUsingIndicator: 1 indicator: {fileID: 7499300373520539281} k__BackingField: + k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} @@ -70,7 +67,7 @@ MonoBehaviour: projectilePrefab: {fileID: 194276104676398060, guid: ea258dd5654a74c4aab409fd5d528b8f, type: 3} projectileNumber: 5 - projectileDamage: 10 + projectileDamage: 1 projectileAngle: 90 projectileSpeed: 500 --- !u!1 &5490651391529734877 diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSwing.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/MeteorSwing.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/HammerSwing.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/MeteorSwing.prefab.meta diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeWave.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrust.prefab similarity index 95% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeWave.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrust.prefab index 996c2909a..02c60c9c3 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeWave.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrust.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 2292981380021792930} - component: {fileID: 1802435259650247748} m_Layer: 0 - m_Name: EarthquakeWave + m_Name: SeismicThrust m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -45,16 +45,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 0bc3a312bfa527e45864c7d94466f674, type: 3} m_Name: m_EditorClassIdentifier: - k__BackingField: EarthquakeWave - k__BackingField: 1 - k__BackingField: 10 - k__BackingField: 15 - k__BackingField: 12 - k__BackingField: 0.5 - k__BackingField: 0 + k__BackingField: {fileID: 11400000, guid: 0a8523f59e9007341b2679d088dbd569, + type: 2} + enableSkill: 1 isUsingIndicator: 1 indicator: {fileID: 7499300373520539281} k__BackingField: + k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeWave.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrust.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeWave.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrust.prefab.meta diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeParticle.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrustParticle.prefab similarity index 99% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeParticle.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrustParticle.prefab index f70187d98..6b1a5381a 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeParticle.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrustParticle.prefab @@ -9808,7 +9808,7 @@ GameObject: m_Component: - component: {fileID: 1291595498312174027} m_Layer: 0 - m_Name: EarthquakeParticle + m_Name: SeismicThrustParticle m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeParticle.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrustParticle.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/EarthquakeParticle.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SeismicThrustParticle.prefab.meta diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/JumpSmash.prefab b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SkyFallSmash.prefab similarity index 95% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/JumpSmash.prefab rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SkyFallSmash.prefab index 93e278075..57f32243e 100644 --- a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/JumpSmash.prefab +++ b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SkyFallSmash.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 2292981380021792930} - component: {fileID: 7464818668275774481} m_Layer: 0 - m_Name: JumpSmash + m_Name: SkyFallSmash m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -46,16 +46,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: ef339f855b0080641b375baefaddb1d0, type: 3} m_Name: m_EditorClassIdentifier: - k__BackingField: JumpSmash - k__BackingField: 1 - k__BackingField: 30 - k__BackingField: 20 - k__BackingField: 5 - k__BackingField: 1 - k__BackingField: 0 + k__BackingField: {fileID: 11400000, guid: f7fd16f319c8c024895abd3e2b395b3f, + type: 2} + enableSkill: 1 isUsingIndicator: 1 indicator: {fileID: 7499300373520539281} k__BackingField: + k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} k__BackingField: {fileID: 0} diff --git a/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/JumpSmash.prefab.meta b/BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SkyFallSmash.prefab.meta similarity index 100% rename from BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/JumpSmash.prefab.meta rename to BlueWater/Assets/05.Prefabs/Skills/Rhinoceros/SkyFallSmash.prefab.meta diff --git a/BlueWater/Assets/09.BehaviorTree/Enemy/Rhinoceros.asset b/BlueWater/Assets/09.BehaviorTree/Enemy/Rhinoceros.asset index ece46848e..b7a050421 100644 --- a/BlueWater/Assets/09.BehaviorTree/Enemy/Rhinoceros.asset +++ b/BlueWater/Assets/09.BehaviorTree/Enemy/Rhinoceros.asset @@ -21,41 +21,36 @@ MonoBehaviour: startIndex: variableStartIndex: JSONSerialization: '{"EntryTask":{"Type":"BehaviorDesigner.Runtime.Tasks.EntryTask","NodeData":{"Offset":"(707.6564,145.842773)"},"ID":0,"Name":"Entry","Instant":true},"RootTask":{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(3.069271,152.681244)"},"ID":1,"Name":"Start - Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-213.843628,152.842773)"},"ID":2,"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":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-63.0232468,150)"},"ID":3,"Name":"Move - Target","Instant":true,"SinglestoppingDistance":3,"SinglelimitMovingTime":5},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(89.99982,145.294128)"},"ID":4,"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.Repeater","NodeData":{"Offset":"(242.734253,146.666718)"},"ID":5,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":6,"Name":"Die + Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(-213.843628,152.842773)"},"ID":2,"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":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-63.0232468,150)"},"ID":3,"Name":"Move + Target","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(89.99982,145.294128)"},"ID":4,"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.Repeater","NodeData":{"Offset":"(242.734253,146.666718)"},"ID":5,"Name":"Repeater","Instant":true,"SharedIntcount":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolrepeatForever":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":true},"SharedBoolendOnFailure":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false},"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(-3.44348145,154.9137)"},"ID":6,"Name":"Die Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-547.465149,148.989136)"},"ID":7,"Name":"Die Sequence","Instant":true,"AbortTypeabortType":"LowerPriority","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Unity.SharedVariables.CompareSharedFloat","NodeData":{"Offset":"(-102.993011,151.369934)","Comment":"CurrentHp == 0"},"ID":8,"Name":"Compare 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":"BehaviorDesigner.Runtime.Tasks.StopBehaviorTree","NodeData":{"Offset":"(83.47067,153.019165)"},"ID":9,"Name":"Stop - Behavior Tree","Instant":true,"SharedGameObjectbehaviorGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedIntgroup":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolpauseBehavior":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1.07836533,154.29248)"},"ID":10,"Name":"To - Far Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.TargetDistance","NodeData":{"Offset":"(-113.882507,146.731567)"},"ID":11,"Name":"Target - Distance","Instant":true,"SinglecompareTo":7,"Inequalityinequality":"GREATER_THEN"},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(120.952148,151.429016)"},"ID":12,"Name":"Far - Skill Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.UntilSuccess","NodeData":{"Offset":"(2.784546,145.445251)"},"ID":13,"Name":"Until - Success","Instant":true,"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.RandomSelector","NodeData":{"Offset":"(-0.869564056,146.086731)"},"ID":14,"Name":"Random - Selector","Instant":true,"Int32seed":0,"BooleanuseSeed":false,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-793.1756,148.733643)"},"ID":15,"Name":"Line - Rush","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-150,148.387054)"},"ID":16,"Name":"Enable - Skill","Instant":true,"StringskillName":"LineRush"},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(0,148.387054)"},"ID":17,"Name":"Activate - Skill","Instant":true,"StringskillName":"LineRush"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(154.705811,153.681122)"},"ID":18,"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":"(-321.806763,147.857132)"},"ID":19,"Name":"Jump - Smash","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-170,148.387054)"},"ID":20,"Name":"Enable - Skill","Instant":true,"StringskillName":"JumpSmash"},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(0,148.387054)"},"ID":21,"Name":"Activate - Skill","Instant":true,"StringskillName":"JumpSmash"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(180,148.387054)"},"ID":22,"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":"(172.307724,150)"},"ID":23,"Name":"Hammer - Swing","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160,150)"},"ID":24,"Name":"Enable - Skill","Instant":true,"StringskillName":"HammerSwing"},{"Type":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-42.5,147.5)"},"ID":25,"Name":"Move - Target","Instant":true,"SinglestoppingDistance":5,"SinglelimitMovingTime":2},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(75,150)"},"ID":26,"Name":"Activate - Skill","Instant":true,"StringskillName":"HammerSwing"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(190,150)"},"ID":27,"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":"(617.213257,152.801758)"},"ID":28,"Name":"Move - Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-88.4967041,148.38623)"},"ID":29,"Name":"Move - Target","Instant":true,"SinglestoppingDistance":3,"SinglelimitMovingTime":5},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(112.150757,148.38623)"},"ID":30,"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":"(1299.83582,148.095245)"},"ID":31,"Name":"To - Near Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.UntilSuccess","NodeData":{"Offset":"(2.18457031,148.709717)"},"ID":32,"Name":"Until - Success","Instant":true,"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.RandomSelector","NodeData":{"Offset":"(0,150)"},"ID":33,"Name":"Random - Selector","Instant":true,"Int32seed":0,"BooleanuseSeed":false,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-158.571045,145.575439)"},"ID":34,"Name":"Hammer - Swing","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160.975586,151.666656)"},"ID":35,"Name":"Enable - Skill","Instant":true,"StringskillName":"HammerSwing"},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-1.95121193,151.666656)"},"ID":36,"Name":"Activate - Skill","Instant":true,"StringskillName":"HammerSwing"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(186.666687,151.666656)"},"ID":37,"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":"(437.314941,154.312485)"},"ID":38,"Name":"Hammer - Attack","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-199.611115,153.471375)"},"ID":39,"Name":"Enable - Skill","Instant":true,"StringskillName":"HammerAttack"},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-55.0359573,147.133621)"},"ID":40,"Name":"Activate - Skill","Instant":true,"StringskillName":"HammerAttack"},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(108.787842,150.626709)"},"ID":41,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-138.169678,154.75708)"},"ID":42,"Name":"Earthquake - Wave","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160,150)"},"ID":43,"Name":"Enable - Skill","Instant":true,"StringskillName":"EarthquakeWave"},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-1.30444336,145.216064)"},"ID":44,"Name":"Activate - Skill","Instant":true,"StringskillName":"EarthquakeWave"},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(138.695557,145.216064)"},"ID":45,"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.Wait","NodeData":{"Offset":"(100,150)"},"ID":46,"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}}]}]}]}]}]}]}]}]},"Variables":[{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"CurrentHp","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":"MovePoint","IsShared":true,"Vector3mValue":"(0,0,0)"},{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"StoppingDistance","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"isStartBehavior","IsShared":true,"BooleanmValue":false}]}' + Behavior Tree","Instant":true,"SharedGameObjectbehaviorGameObject":{"Type":"BehaviorDesigner.Runtime.SharedGameObject","Name":"MyObj","IsShared":true},"SharedIntgroup":{"Type":"BehaviorDesigner.Runtime.SharedInt","Name":null,"Int32mValue":0},"SharedBoolpauseBehavior":{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":null,"BooleanmValue":false}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1.07836533,154.29248)"},"ID":10,"Name":"Skill + Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.UntilSuccess","NodeData":{"Offset":"(-4.999878,154.166809)"},"ID":11,"Name":"Until + Success","Instant":true,"Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.RandomSelector","NodeData":{"Offset":"(-0.8695679,146.086731)"},"ID":12,"Name":"Random + Selector","Instant":true,"Int32seed":0,"BooleanuseSeed":false,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-1254.71313,148.733643)"},"ID":13,"Name":"Bull + Charge","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-150,148.387054)"},"ID":14,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":0},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(0,148.387054)"},"ID":15,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":0},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(154.705811,153.681122)"},"ID":16,"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":"(-771.158447,149.69397)"},"ID":17,"Name":"Hammer + Slam","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-199.611115,153.471375)"},"ID":18,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":1},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-55.0359573,147.133621)"},"ID":19,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":1},{"Type":"BehaviorDesigner.Runtime.Tasks.Selector","NodeData":{"Offset":"(108.787842,150.626709)"},"ID":20,"Name":"Selector","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(-138.169678,154.75708)"},"ID":21,"Name":"Seismic + Thrust","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160,150)"},"ID":22,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":3},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-1.30444336,145.216064)"},"ID":23,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":3},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(138.695557,145.216064)"},"ID":24,"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.Wait","NodeData":{"Offset":"(100,150)"},"ID":25,"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":"(284.843262,150)"},"ID":26,"Name":"Move + Meteor Swing","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160,150)"},"ID":27,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":2},{"Type":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-42.5,147.5)"},"ID":28,"Name":"Move + Target","Instant":true},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(75,150)"},"ID":29,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":2},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(190,150)"},"ID":30,"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":"(857.1762,147.857132)"},"ID":31,"Name":"Sky + Fall Smash","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-170,148.387054)"},"ID":32,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":4},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(0,148.387054)"},"ID":33,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":4},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(180,148.387054)"},"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}}]},{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(1291.7854,152.801758)"},"ID":35,"Name":"Move + Sequence","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.MoveTarget","NodeData":{"Offset":"(-88.4967041,148.38623)"},"ID":36,"Name":"Move + Target","Instant":true},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(112.150757,148.38623)"},"ID":37,"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}}]}]}]}]}]}]}]},"DetachedTasks":[{"Type":"BehaviorDesigner.Runtime.Tasks.Sequence","NodeData":{"Offset":"(702.53656,1200)"},"ID":38,"Name":"Meteor + Swing","Instant":true,"AbortTypeabortType":"None","Children":[{"Type":"BlueWaterProject.EnableSkill","NodeData":{"Offset":"(-160.975586,151.666656)"},"ID":39,"Name":"Enable + Skill","Instant":true,"Int32skillIndex":2},{"Type":"BlueWaterProject.ActivateSkill","NodeData":{"Offset":"(-1.95121193,151.666656)"},"ID":40,"Name":"Activate + Skill","Instant":true,"Int32skillIndex":2},{"Type":"BehaviorDesigner.Runtime.Tasks.Wait","NodeData":{"Offset":"(186.666687,151.666656)"},"ID":41,"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.SharedFloat","Name":"CurrentHp","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedVector3","Name":"MovePoint","IsShared":true,"Vector3mValue":"(0,0,0)"},{"Type":"BehaviorDesigner.Runtime.SharedFloat","Name":"StoppingDistance","IsShared":true,"SinglemValue":0},{"Type":"BehaviorDesigner.Runtime.SharedBool","Name":"isStartBehavior","IsShared":true,"BooleanmValue":false}]}' fieldSerializationData: typeName: [] fieldNameHash: diff --git a/BlueWater/Assets/Fantasy Troll/LineRush.anim b/BlueWater/Assets/Fantasy Troll/BullCharge.anim similarity index 99% rename from BlueWater/Assets/Fantasy Troll/LineRush.anim rename to BlueWater/Assets/Fantasy Troll/BullCharge.anim index c10bd0a11..fddcd0584 100644 --- a/BlueWater/Assets/Fantasy Troll/LineRush.anim +++ b/BlueWater/Assets/Fantasy Troll/BullCharge.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: LineRush + m_Name: BullCharge serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/BlueWater/Assets/Fantasy Troll/LineRush.anim.meta b/BlueWater/Assets/Fantasy Troll/BullCharge.anim.meta similarity index 100% rename from BlueWater/Assets/Fantasy Troll/LineRush.anim.meta rename to BlueWater/Assets/Fantasy Troll/BullCharge.anim.meta diff --git a/BlueWater/Assets/Fantasy Troll/HammerAttack.anim b/BlueWater/Assets/Fantasy Troll/HammerSlam.anim similarity index 99% rename from BlueWater/Assets/Fantasy Troll/HammerAttack.anim rename to BlueWater/Assets/Fantasy Troll/HammerSlam.anim index dd7d04f1f..7c6b01dbe 100644 --- a/BlueWater/Assets/Fantasy Troll/HammerAttack.anim +++ b/BlueWater/Assets/Fantasy Troll/HammerSlam.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: HammerAttack + m_Name: HammerSlam serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/BlueWater/Assets/Fantasy Troll/HammerAttack.anim.meta b/BlueWater/Assets/Fantasy Troll/HammerSlam.anim.meta similarity index 100% rename from BlueWater/Assets/Fantasy Troll/HammerAttack.anim.meta rename to BlueWater/Assets/Fantasy Troll/HammerSlam.anim.meta diff --git a/BlueWater/Assets/Fantasy Troll/HammerSwing.anim b/BlueWater/Assets/Fantasy Troll/MeteorSwing.anim similarity index 99% rename from BlueWater/Assets/Fantasy Troll/HammerSwing.anim rename to BlueWater/Assets/Fantasy Troll/MeteorSwing.anim index 10a113abd..f61982f6b 100644 --- a/BlueWater/Assets/Fantasy Troll/HammerSwing.anim +++ b/BlueWater/Assets/Fantasy Troll/MeteorSwing.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: HammerSwing + m_Name: MeteorSwing serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/BlueWater/Assets/Fantasy Troll/HammerSwing.anim.meta b/BlueWater/Assets/Fantasy Troll/MeteorSwing.anim.meta similarity index 100% rename from BlueWater/Assets/Fantasy Troll/HammerSwing.anim.meta rename to BlueWater/Assets/Fantasy Troll/MeteorSwing.anim.meta diff --git a/BlueWater/Assets/Fantasy Troll/Rhinoceros.controller b/BlueWater/Assets/Fantasy Troll/Rhinoceros.controller index 09944fb2d..74333a972 100644 --- a/BlueWater/Assets/Fantasy Troll/Rhinoceros.controller +++ b/BlueWater/Assets/Fantasy Troll/Rhinoceros.controller @@ -8,9 +8,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isJump - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 4 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 7184740733897293241} m_Solo: 0 @@ -32,7 +32,10 @@ AnimatorStateTransition: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: - m_Conditions: [] + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: -1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -6198737061502339589} m_Solo: 0 @@ -42,7 +45,7 @@ AnimatorStateTransition: m_TransitionDuration: 0 m_TransitionOffset: 0 m_ExitTime: 1 - m_HasExitTime: 1 + m_HasExitTime: 0 m_HasFixedDuration: 0 m_InterruptionSource: 0 m_OrderedInterruption: 1 @@ -80,9 +83,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isJump - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 4 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 7184740733897293241} m_Solo: 0 @@ -136,7 +139,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Smash + m_Name: SkyFallSmash m_Speed: 1 m_CycleOffset: 0 m_Transitions: @@ -217,8 +220,8 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isLineRush + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex m_EventTreshold: 0 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 738300769568541194} @@ -241,7 +244,10 @@ AnimatorStateTransition: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_Name: - m_Conditions: [] + m_Conditions: + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: -1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -6198737061502339589} m_Solo: 0 @@ -251,7 +257,7 @@ AnimatorStateTransition: m_TransitionDuration: 0 m_TransitionOffset: 0 m_ExitTime: 0.75409836 - m_HasExitTime: 1 + m_HasExitTime: 0 m_HasFixedDuration: 0 m_InterruptionSource: 0 m_OrderedInterruption: 1 @@ -264,9 +270,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 2 - m_ConditionEvent: isLineRush - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: -1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -6198737061502339589} m_Solo: 0 @@ -321,21 +327,18 @@ AnimatorStateMachine: - serializedVersion: 1 m_State: {fileID: -5691180661881930344} m_Position: {x: 600, y: 100, z: 0} - - serializedVersion: 1 - m_State: {fileID: 8724847276003412768} - m_Position: {x: 500, y: -10, z: 0} - serializedVersion: 1 m_State: {fileID: 7753610216372121977} m_Position: {x: 200, y: -100, z: 0} - serializedVersion: 1 m_State: {fileID: 6774117770736358250} - m_Position: {x: -100, y: 200, z: 0} + m_Position: {x: 110, y: 260, z: 0} - serializedVersion: 1 m_State: {fileID: 738300769568541194} - m_Position: {x: 180, y: 270, z: 0} + m_Position: {x: -110, y: 200, z: 0} - serializedVersion: 1 m_State: {fileID: -239926944250279742} - m_Position: {x: 470, y: 270, z: 0} + m_Position: {x: 460, y: 270, z: 0} - serializedVersion: 1 m_State: {fileID: 7184740733897293241} m_Position: {x: 720, y: 200, z: 0} @@ -360,7 +363,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: HammerSwing + m_Name: MeteorSwing m_Speed: 1 m_CycleOffset: 0 m_Transitions: @@ -413,34 +416,10 @@ AnimatorController: m_DefaultInt: 0 m_DefaultBool: 0 m_Controller: {fileID: 0} - - m_Name: isHammerAttack - m_Type: 9 + - m_Name: skillIndex + m_Type: 3 m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - - m_Name: isLineRush - m_Type: 4 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - - m_Name: isHammerSwing - m_Type: 9 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - - m_Name: isJump - m_Type: 4 - m_DefaultFloat: 0 - m_DefaultInt: 0 - m_DefaultBool: 0 - m_Controller: {fileID: 0} - - m_Name: isSmash - m_Type: 9 - m_DefaultFloat: 0 - m_DefaultInt: 0 + m_DefaultInt: -1 m_DefaultBool: 0 m_Controller: {fileID: 0} m_AnimatorLayers: @@ -510,7 +489,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: LineRush + m_Name: BullCharge m_Speed: 1 m_CycleOffset: 0 m_Transitions: @@ -538,9 +517,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isHammerAttack - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 6774117770736358250} m_Solo: 0 @@ -563,9 +542,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isHammerSwing - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 2 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -239926944250279742} m_Solo: 0 @@ -588,9 +567,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isHammerSwing - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 2 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -239926944250279742} m_Solo: 0 @@ -660,12 +639,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 2 - m_ConditionEvent: isJump - m_EventTreshold: 0 - - m_ConditionMode: 1 - m_ConditionEvent: isSmash - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: -1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: -5694466715536734112} m_Solo: 0 @@ -688,9 +664,9 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isHammerAttack - m_EventTreshold: 0 + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex + m_EventTreshold: 1 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 6774117770736358250} m_Solo: 0 @@ -712,7 +688,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: HammerAttack + m_Name: HammerSlam m_Speed: 1 m_CycleOffset: 0 m_Transitions: @@ -739,7 +715,7 @@ AnimatorState: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Jump + m_Name: SkyFallJump m_Speed: 1 m_CycleOffset: 0 m_Transitions: @@ -767,8 +743,8 @@ AnimatorStateTransition: m_PrefabAsset: {fileID: 0} m_Name: m_Conditions: - - m_ConditionMode: 1 - m_ConditionEvent: isLineRush + - m_ConditionMode: 6 + m_ConditionEvent: skillIndex m_EventTreshold: 0 m_DstStateMachine: {fileID: 0} m_DstState: {fileID: 738300769568541194} @@ -857,29 +833,3 @@ AnimatorStateTransition: m_InterruptionSource: 0 m_OrderedInterruption: 1 m_CanTransitionToSelf: 1 ---- !u!1102 &8724847276003412768 -AnimatorState: - serializedVersion: 6 - m_ObjectHideFlags: 1 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_Name: TakeDamage - m_Speed: 1 - m_CycleOffset: 0 - m_Transitions: [] - m_StateMachineBehaviours: [] - m_Position: {x: 50, y: 50, z: 0} - m_IKOnFeet: 0 - m_WriteDefaultValues: 1 - m_Mirror: 0 - m_SpeedParameterActive: 0 - m_MirrorParameterActive: 0 - m_CycleOffsetParameterActive: 0 - m_TimeParameterActive: 0 - m_Motion: {fileID: 7400000, guid: 1585fad053ac2414096f7bea1f6a6209, type: 2} - m_Tag: - m_SpeedParameter: - m_MirrorParameter: - m_CycleOffsetParameter: - m_TimeParameter: diff --git a/BlueWater/Assets/Fantasy Troll/Jump.anim b/BlueWater/Assets/Fantasy Troll/SkyFallJump.anim similarity index 99% rename from BlueWater/Assets/Fantasy Troll/Jump.anim rename to BlueWater/Assets/Fantasy Troll/SkyFallJump.anim index 9c8484160..2144a28dc 100644 --- a/BlueWater/Assets/Fantasy Troll/Jump.anim +++ b/BlueWater/Assets/Fantasy Troll/SkyFallJump.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Jump + m_Name: SkyFallJump serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/BlueWater/Assets/Fantasy Troll/Jump.anim.meta b/BlueWater/Assets/Fantasy Troll/SkyFallJump.anim.meta similarity index 100% rename from BlueWater/Assets/Fantasy Troll/Jump.anim.meta rename to BlueWater/Assets/Fantasy Troll/SkyFallJump.anim.meta diff --git a/BlueWater/Assets/Fantasy Troll/Smash.anim b/BlueWater/Assets/Fantasy Troll/SkyFallSmash.anim similarity index 99% rename from BlueWater/Assets/Fantasy Troll/Smash.anim rename to BlueWater/Assets/Fantasy Troll/SkyFallSmash.anim index 079356563..a7d705c0d 100644 --- a/BlueWater/Assets/Fantasy Troll/Smash.anim +++ b/BlueWater/Assets/Fantasy Troll/SkyFallSmash.anim @@ -6,7 +6,7 @@ AnimationClip: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: Smash + m_Name: SkyFallSmash serializedVersion: 7 m_Legacy: 0 m_Compressed: 0 diff --git a/BlueWater/Assets/Fantasy Troll/Smash.anim.meta b/BlueWater/Assets/Fantasy Troll/SkyFallSmash.anim.meta similarity index 100% rename from BlueWater/Assets/Fantasy Troll/Smash.anim.meta rename to BlueWater/Assets/Fantasy Troll/SkyFallSmash.anim.meta