+ 전투 맵 수정 + CombatPlayer MainSkillUi 초기화 오류 수정 + 메뉴UI Close버튼 미작동 수정 + HitStop과 SlowMotion 겹치는 문제 수정
100 lines
2.9 KiB
C#
100 lines
2.9 KiB
C#
using UnityEngine;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class CombatSkillController : MonoBehaviour
|
|
{
|
|
// Components
|
|
[SerializeField] private BaseSkill mainSkill;
|
|
private BaseSkill instantiateMainSkill;
|
|
private Collider col;
|
|
private Rigidbody rb;
|
|
private Transform visualLook;
|
|
private Animator anim;
|
|
|
|
// Interfaces
|
|
private IMeleeComboAttackable iMeleeComboAttackable;
|
|
|
|
// Variables
|
|
private bool enableSkill = true;
|
|
private bool isActivatingSkill;
|
|
|
|
// Events
|
|
public delegate void StartSkillEvent();
|
|
public event StartSkillEvent OnStartSkill;
|
|
|
|
public delegate void EndSkillEvent();
|
|
public event EndSkillEvent OnEndSkill;
|
|
|
|
// Unity events
|
|
private void Start()
|
|
{
|
|
iMeleeComboAttackable = GetComponent<IMeleeComboAttackable>();
|
|
|
|
InitSkill();
|
|
}
|
|
|
|
// Init methods
|
|
public void InitComponent(Collider collider, Rigidbody rigidbody, Transform visualLook, Animator animator)
|
|
{
|
|
col = collider;
|
|
rb = rigidbody;
|
|
this.visualLook = visualLook;
|
|
anim = animator;
|
|
}
|
|
|
|
private void InitSkill()
|
|
{
|
|
instantiateMainSkill = Instantiate(mainSkill);
|
|
if (instantiateMainSkill == null) return;
|
|
|
|
var targetLayer = iMeleeComboAttackable.TargetLayer;
|
|
var ui = CombatUiManager.Inst.MainSkillUi;
|
|
ui.ResetSkillUi();
|
|
ui.gameObject.SetActive(true);
|
|
|
|
instantiateMainSkill.SkillInputData.InitInputData(transform, col, rb, null, visualLook, anim, null, targetLayer, ui);
|
|
}
|
|
|
|
// Events methods
|
|
public void HandleEnableSkill() => enableSkill = true;
|
|
public void HandleDisableSkill() => enableSkill = false;
|
|
|
|
public void HandleMainSkill()
|
|
{
|
|
if (!CanSkill()) return;
|
|
|
|
StartSkill();
|
|
instantiateMainSkill.ActivateSkill(EndSkill);
|
|
}
|
|
|
|
// Methods
|
|
private bool CanSkill()
|
|
{
|
|
if (!enableSkill || isActivatingSkill) return false;
|
|
|
|
instantiateMainSkill.SkillInputData.StartPosition = rb.position;
|
|
var enableMainSkill = instantiateMainSkill.EnableSkill();
|
|
|
|
return enableMainSkill;
|
|
}
|
|
|
|
private void StartSkill()
|
|
{
|
|
// 이동, 공격, 대쉬 X 이벤트
|
|
OnStartSkill?.Invoke();
|
|
enableSkill = false;
|
|
isActivatingSkill = true;
|
|
rb.velocity = Vector3.zero;
|
|
}
|
|
|
|
private void EndSkill()
|
|
{
|
|
// 이동, 공격, 대쉬 O 이벤트
|
|
OnEndSkill?.Invoke();
|
|
enableSkill = true;
|
|
isActivatingSkill = false;
|
|
}
|
|
}
|
|
} |