Closes #256 코뿔소 보스 추가
This commit is contained in:
parent
498162d4a8
commit
7dac1cd0e7
@ -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:
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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<IMeleeComboAttackable>();
|
||||
iAnimationStateController = GetComponent<IAnimationStateController>();
|
||||
|
||||
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
|
||||
|
@ -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;
|
||||
|
@ -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<SkillBase> skillList = new(6);
|
||||
protected Dictionary<string, ISkill> skillDictionary = new(6);
|
||||
private List<SkillBase> instanceSkillList = new(6);
|
||||
[SerializeField] protected List<BaseSkill> skillList = new();
|
||||
protected List<BaseSkill> 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<Rigidbody>();
|
||||
capsuleCollider = GetComponent<Collider>();
|
||||
agent = GetComponent<NavMeshAgent>();
|
||||
col = GetComponent<Collider>();
|
||||
behaviorTree = GetComponent<BehaviorTree>();
|
||||
visualLook = transform.Find("VisualLook");
|
||||
animator = visualLook.GetComponent<Animator>();
|
||||
spriteRenderer = visualLook.GetComponent<SpriteRenderer>();
|
||||
Anim = visualLook.GetComponent<Animator>();
|
||||
flashWhiteSpriteRenderer = visualLook.GetComponent<SpriteRenderer>();
|
||||
}
|
||||
|
||||
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<Collider>();
|
||||
flashWhiteWaitTime = new WaitForSeconds(flashWhiteTime);
|
||||
|
||||
instantiateSkillList = new List<BaseSkill>(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
|
||||
|
@ -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<RhinocerosAnimationParameter, int> animationParameterHashDictionary;
|
||||
private Dictionary<RhinocerosAnimationName, int> 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<RhinocerosBossMapController>();
|
||||
iAnimationStateController = GetComponent<IAnimationStateController>();
|
||||
ai = GetComponent<IAstarAI>();
|
||||
}
|
||||
|
||||
private void InitDictionary()
|
||||
{
|
||||
animationParameterHashDictionary = new Dictionary<RhinocerosAnimationParameter, int>(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<RhinocerosAnimationName, int>(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>(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>(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>(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>(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>(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<Collider>();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
@ -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)
|
||||
{
|
||||
|
@ -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<CombatPlayer>();
|
||||
CurrentCombatPlayer = instantiatePlayer;
|
||||
OnInstantiateCombatPlayer?.Invoke(instantiatePlayer.transform);
|
||||
}
|
||||
}
|
||||
|
@ -9,7 +9,11 @@ namespace BlueWaterProject
|
||||
{
|
||||
base.Close();
|
||||
|
||||
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||
var playerInput = FindAnyObjectByType<PlayerInput>();
|
||||
if (playerInput != null && playerInput.enabled)
|
||||
{
|
||||
playerInput.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void InitAndUpdateInventory()
|
||||
|
@ -9,7 +9,11 @@ namespace BlueWaterProject
|
||||
{
|
||||
base.Close();
|
||||
|
||||
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(ShipPlayer.OCEAN);
|
||||
var playerInput = FindAnyObjectByType<PlayerInput>();
|
||||
if (playerInput != null && playerInput.enabled)
|
||||
{
|
||||
playerInput.SwitchCurrentActionMap(ShipPlayer.OCEAN);
|
||||
}
|
||||
}
|
||||
|
||||
protected override void InitAndUpdateInventory()
|
||||
|
@ -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
|
||||
}
|
||||
}
|
@ -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>();
|
||||
iDamageable?.TakeDamage(Damage);
|
||||
iDamageable?.TakeDamage(SkillData.Damage);
|
||||
isAttacked = true;
|
||||
|
||||
var iCombatable = hits[i].transform.GetComponent<ICombatable>();
|
||||
if (iCombatable != null)
|
||||
var combatStatus = hits[i].transform.GetComponent<CombatStatus>();
|
||||
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<Rigidbody>().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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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>();
|
||||
iDamageable?.TakeDamage(Damage);
|
||||
|
||||
var iCombatable = hitColliders[i].GetComponent<ICombatable>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
117
BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs
Normal file
117
BlueWater/Assets/02.Scripts/NewSkill/Rhinoceros/HammerSlam.cs
Normal file
@ -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>();
|
||||
iDamageable?.TakeDamage(SkillData.Damage);
|
||||
|
||||
var combatStatus = hitColliders[i].transform.GetComponent<CombatStatus>();
|
||||
if (combatStatus != null)
|
||||
{
|
||||
var targetToVector = hitColliders[i].transform.position - transform.position;
|
||||
targetToVector.y = 0f;
|
||||
var direction = targetToVector.normalized;
|
||||
combatStatus.Stun(0.05f);
|
||||
combatStatus.GetComponent<Rigidbody>().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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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>();
|
||||
iDamageable?.TakeDamage(Damage);
|
||||
iDamageable?.TakeDamage(SkillData.Damage);
|
||||
|
||||
var iCombatable = hitColliders[i].GetComponent<ICombatable>();
|
||||
if (iCombatable != null)
|
||||
var combatStatus = hitColliders[i].transform.GetComponent<CombatStatus>();
|
||||
if (combatStatus != null)
|
||||
{
|
||||
iCombatable.DisableMove(0.1f);
|
||||
iCombatable.AddForceToDirection(attackDirection, 15f);
|
||||
combatStatus.Stun(0.1f);
|
||||
combatStatus.GetComponent<Rigidbody>().AddForce(attackDirection * 15f, ForceMode.Impulse);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -135,20 +136,29 @@ namespace RhinocerosSkill
|
||||
|
||||
var startAngle = yAngle - projectileAngle * 0.5f;
|
||||
var angleStep = projectileAngle / (projectileNumber - 1);
|
||||
particleInstantiateLocation ??= FindAnyObjectByType<RhinocerosBossMapController>().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>();
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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<RhinocerosBossMapController>().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>();
|
||||
iDamageable?.TakeDamage(Damage);
|
||||
iDamageable?.TakeDamage(SkillData.Damage);
|
||||
|
||||
var iCombatable = hits[i].transform.GetComponent<ICombatable>();
|
||||
if (iCombatable != null)
|
||||
var combatStatus = hits[i].transform.GetComponent<CombatStatus>();
|
||||
if (combatStatus != null)
|
||||
{
|
||||
iCombatable.DisableMove(0.15f);
|
||||
iCombatable.AddForceToDirection(transform.forward, 20f);
|
||||
combatStatus.Stun(0.15f);
|
||||
combatStatus.SlowMoveSpeed(5f, 0.5f);
|
||||
combatStatus.GetComponent<Rigidbody>().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();
|
||||
}
|
||||
}
|
||||
}
|
@ -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<ICombatable>().StopStun();
|
||||
SkillInputData.TargetCollider.GetComponent<CombatStatus>().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>();
|
||||
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<ICombatable>();
|
||||
if (iCombatable != null)
|
||||
var combatStatus = hitColliders[i].transform.GetComponent<CombatStatus>();
|
||||
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<Rigidbody>().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();
|
||||
}
|
||||
}
|
||||
}
|
@ -14,7 +14,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
<Name>k__BackingField: "\uD669\uC18C \uB3CC\uC9C4"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 10
|
||||
<Damage>k__BackingField: 1
|
||||
<Cooldown>k__BackingField: 6
|
||||
<Range>k__BackingField: 0
|
||||
<CastingTime>k__BackingField: 1
|
||||
|
@ -14,7 +14,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
<Name>k__BackingField: "\uB9DD\uCE58 \uAC15\uD0C0"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 10
|
||||
<Damage>k__BackingField: 1
|
||||
<Cooldown>k__BackingField: 3
|
||||
<Range>k__BackingField: 3.5
|
||||
<CastingTime>k__BackingField: 1
|
||||
|
@ -14,7 +14,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
<Name>k__BackingField: "\uC720\uC131 \uD718\uB450\uB974\uAE30"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 10
|
||||
<Damage>k__BackingField: 1
|
||||
<Cooldown>k__BackingField: 10
|
||||
<Range>k__BackingField: 3
|
||||
<CastingTime>k__BackingField: 1
|
||||
|
@ -14,7 +14,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
<Name>k__BackingField: "\uC9C0\uC9C4 \uD30C\uB3D9"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 10
|
||||
<Damage>k__BackingField: 1
|
||||
<Cooldown>k__BackingField: 15
|
||||
<Range>k__BackingField: 12
|
||||
<CastingTime>k__BackingField: 0.5
|
||||
|
@ -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:
|
||||
<Name>k__BackingField: "\uCC3D\uACF5\uC758 \uB099\uD558"
|
||||
<Description>k__BackingField:
|
||||
<Damage>k__BackingField: 30
|
||||
<Damage>k__BackingField: 2
|
||||
<Cooldown>k__BackingField: 20
|
||||
<Range>k__BackingField: 5
|
||||
<CastingTime>k__BackingField: 1
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
@ -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<PlayerInput>().enabled = false;
|
||||
moveNextStageButton.interactable = (int)DataManager.Inst.CurrentSaveStage < Enum.GetValues(typeof(SaveStage)).Length - 1;
|
||||
|
||||
base.Open();
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,11 @@ namespace BlueWaterProject
|
||||
|
||||
if (!CombatUiManager.Inst.IsPopupListEmpty()) return;
|
||||
|
||||
FindAnyObjectByType<PlayerInput>()?.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||
var playerInput = FindAnyObjectByType<PlayerInput>();
|
||||
if (playerInput != null && playerInput.enabled)
|
||||
{
|
||||
playerInput.SwitchCurrentActionMap(CombatInput.COMBAT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -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}
|
||||
<Name>k__BackingField: Rhinoceros
|
||||
<Anim>k__BackingField: {fileID: 3402580928633681741}
|
||||
flashWhiteSpriteRenderer: {fileID: 8089310337301863899}
|
||||
mapController: {fileID: 0}
|
||||
<BossName>k__BackingField: "\uCF54\uBFD4\uC18C"
|
||||
<MaxHp>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}
|
||||
<CurrentHp>k__BackingField: 0
|
||||
<Target>k__BackingField: {fileID: 0}
|
||||
<IsUsingSkill>k__BackingField: 0
|
||||
isMoving: 0
|
||||
<IsActivatingSkill>k__BackingField: 0
|
||||
--- !u!1 &5250888242721872286
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -10294,3 +10294,4 @@ MonoBehaviour:
|
||||
<IsSlowedMoveSpeed>k__BackingField: 0
|
||||
<MoveSpeedCoefficient>k__BackingField: 0
|
||||
slowColor: {r: 0.5921569, g: 0.9843137, b: 0.5882353, a: 1}
|
||||
stunParticle: {fileID: 5631981413225627599}
|
||||
|
@ -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:
|
||||
<SkillName>k__BackingField: LineRush
|
||||
<ReadySkill>k__BackingField: 1
|
||||
<Damage>k__BackingField: 10
|
||||
<Cooldown>k__BackingField: 6
|
||||
<Range>k__BackingField: 0
|
||||
<CastingTime>k__BackingField: 1
|
||||
<SkillDuration>k__BackingField: 0
|
||||
<SkillData>k__BackingField: {fileID: 11400000, guid: a73bd420075994a4da31c17857a68079,
|
||||
type: 2}
|
||||
enableSkill: 1
|
||||
isUsingIndicator: 1
|
||||
indicator: {fileID: 3624644856654563365}
|
||||
<SkillInputData>k__BackingField:
|
||||
<Transform>k__BackingField: {fileID: 0}
|
||||
<PlayerCollider>k__BackingField: {fileID: 0}
|
||||
<PlayerRb>k__BackingField: {fileID: 0}
|
||||
<PlayerAgent>k__BackingField: {fileID: 0}
|
@ -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:
|
||||
<SkillName>k__BackingField: HammerAttack
|
||||
<ReadySkill>k__BackingField: 1
|
||||
<Damage>k__BackingField: 10
|
||||
<Cooldown>k__BackingField: 3
|
||||
<Range>k__BackingField: 3.5
|
||||
<CastingTime>k__BackingField: 1
|
||||
<SkillDuration>k__BackingField: 0
|
||||
<SkillData>k__BackingField: {fileID: 11400000, guid: fff709d3ddb3f204b8b06337919d0d93,
|
||||
type: 2}
|
||||
enableSkill: 1
|
||||
isUsingIndicator: 1
|
||||
indicator: {fileID: 7499300373520539281}
|
||||
<SkillInputData>k__BackingField:
|
||||
<Transform>k__BackingField: {fileID: 0}
|
||||
<PlayerCollider>k__BackingField: {fileID: 0}
|
||||
<PlayerRb>k__BackingField: {fileID: 0}
|
||||
<PlayerAgent>k__BackingField: {fileID: 0}
|
@ -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:
|
||||
<SkillName>k__BackingField: HammerSwing
|
||||
<ReadySkill>k__BackingField: 1
|
||||
<Damage>k__BackingField: 10
|
||||
<Cooldown>k__BackingField: 10
|
||||
<Range>k__BackingField: 3
|
||||
<CastingTime>k__BackingField: 1
|
||||
<SkillDuration>k__BackingField: 0
|
||||
<SkillData>k__BackingField: {fileID: 11400000, guid: a1e550fbbc57574438f4a11f19069b56,
|
||||
type: 2}
|
||||
enableSkill: 1
|
||||
isUsingIndicator: 1
|
||||
indicator: {fileID: 7499300373520539281}
|
||||
<SkillInputData>k__BackingField:
|
||||
<Transform>k__BackingField: {fileID: 0}
|
||||
<PlayerCollider>k__BackingField: {fileID: 0}
|
||||
<PlayerRb>k__BackingField: {fileID: 0}
|
||||
<PlayerAgent>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
|
@ -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:
|
||||
<SkillName>k__BackingField: EarthquakeWave
|
||||
<ReadySkill>k__BackingField: 1
|
||||
<Damage>k__BackingField: 10
|
||||
<Cooldown>k__BackingField: 15
|
||||
<Range>k__BackingField: 12
|
||||
<CastingTime>k__BackingField: 0.5
|
||||
<SkillDuration>k__BackingField: 0
|
||||
<SkillData>k__BackingField: {fileID: 11400000, guid: 0a8523f59e9007341b2679d088dbd569,
|
||||
type: 2}
|
||||
enableSkill: 1
|
||||
isUsingIndicator: 1
|
||||
indicator: {fileID: 7499300373520539281}
|
||||
<SkillInputData>k__BackingField:
|
||||
<Transform>k__BackingField: {fileID: 0}
|
||||
<PlayerCollider>k__BackingField: {fileID: 0}
|
||||
<PlayerRb>k__BackingField: {fileID: 0}
|
||||
<PlayerAgent>k__BackingField: {fileID: 0}
|
@ -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
|
@ -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:
|
||||
<SkillName>k__BackingField: JumpSmash
|
||||
<ReadySkill>k__BackingField: 1
|
||||
<Damage>k__BackingField: 30
|
||||
<Cooldown>k__BackingField: 20
|
||||
<Range>k__BackingField: 5
|
||||
<CastingTime>k__BackingField: 1
|
||||
<SkillDuration>k__BackingField: 0
|
||||
<SkillData>k__BackingField: {fileID: 11400000, guid: f7fd16f319c8c024895abd3e2b395b3f,
|
||||
type: 2}
|
||||
enableSkill: 1
|
||||
isUsingIndicator: 1
|
||||
indicator: {fileID: 7499300373520539281}
|
||||
<SkillInputData>k__BackingField:
|
||||
<Transform>k__BackingField: {fileID: 0}
|
||||
<PlayerCollider>k__BackingField: {fileID: 0}
|
||||
<PlayerRb>k__BackingField: {fileID: 0}
|
||||
<PlayerAgent>k__BackingField: {fileID: 0}
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
@ -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
|
@ -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:
|
||||
|
@ -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
|
@ -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
|
Loading…
Reference in New Issue
Block a user