+ CombatPlayer 기능별 분리 + Combat, CombatUi 전용 input action map 추가 + 스킬 시스템 로직 수정 + 전투플레이어 스킬(검의 왈츠) 로직 변경
115 lines
4.6 KiB
C#
115 lines
4.6 KiB
C#
using Sirenix.OdinInspector;
|
|
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class CombatPlayer : MonoBehaviour
|
|
{
|
|
// Components
|
|
[SerializeField] private Collider col;
|
|
[SerializeField] private Rigidbody rb;
|
|
[SerializeField] private PlayerInput playerInput;
|
|
[SerializeField] private Transform visualLook;
|
|
[SerializeField] private Animator anim;
|
|
[SerializeField] private SpriteRenderer spriteRenderer;
|
|
|
|
[SerializeField] private CombatInput input;
|
|
[SerializeField] private CombatMovement movement;
|
|
[SerializeField] private CombatAnimator animator;
|
|
[SerializeField] private CombatAttacker attacker;
|
|
[SerializeField] private CombatHealth health;
|
|
[SerializeField] private CombatSkillController skillController;
|
|
|
|
// Unity events
|
|
private void Awake()
|
|
{
|
|
InitComponent();
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
// Input
|
|
input.OnMoveInputReceived += movement.HandleInputMovement;
|
|
input.OnDashInputReceived += movement.HandleDash;
|
|
input.OnAttackInputReceived += attacker.HandleAttack;
|
|
input.OnActivateMainSkillInputReceived += skillController.HandleMainSkill;
|
|
|
|
// Movement
|
|
movement.OnStartDash += skillController.HandleDisableSkill;
|
|
movement.OnEndDash += skillController.HandleEnableSkill;
|
|
|
|
// Attacker
|
|
attacker.OnAttackInDashing += movement.HandleAttackInDash;
|
|
|
|
attacker.OnStartAttack += movement.HandleDisableMove;
|
|
attacker.OnStartAttack += skillController.HandleDisableSkill;
|
|
|
|
attacker.OnEndAttack += movement.HandleEnableMove;
|
|
attacker.OnEndAttack += skillController.HandleEnableSkill;
|
|
|
|
// SkillController
|
|
skillController.OnStartSkill += movement.HandleDisableMoveAndDash;
|
|
skillController.OnStartSkill += attacker.HandleDisableAttack;
|
|
|
|
skillController.OnEndSkill += movement.HandleEnableMoveAndDash;
|
|
skillController.OnEndSkill += attacker.HandleEnableAttack;
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
// Input
|
|
input.OnMoveInputReceived -= movement.HandleInputMovement;
|
|
input.OnDashInputReceived -= movement.HandleDash;
|
|
input.OnAttackInputReceived -= attacker.HandleAttack;
|
|
input.OnActivateMainSkillInputReceived -= skillController.HandleMainSkill;
|
|
|
|
// Movement
|
|
movement.OnStartDash -= skillController.HandleDisableSkill;
|
|
movement.OnEndDash -= skillController.HandleEnableSkill;
|
|
|
|
// Attacker
|
|
attacker.OnAttackInDashing -= movement.HandleAttackInDash;
|
|
|
|
attacker.OnStartAttack -= movement.HandleDisableMove;
|
|
attacker.OnStartAttack -= skillController.HandleDisableSkill;
|
|
|
|
attacker.OnEndAttack -= movement.HandleEnableMove;
|
|
attacker.OnEndAttack -= skillController.HandleEnableSkill;
|
|
|
|
// SkillController
|
|
skillController.OnStartSkill -= movement.HandleDisableMoveAndDash;
|
|
skillController.OnStartSkill -= attacker.HandleEnableAttack;
|
|
|
|
skillController.OnEndSkill -= movement.HandleEnableMoveAndDash;
|
|
skillController.OnEndSkill -= attacker.HandleDisableAttack;
|
|
}
|
|
|
|
// Init
|
|
[Button("셋팅 초기화")]
|
|
private void InitComponent()
|
|
{
|
|
col = GetComponent<Collider>();
|
|
rb = GetComponent<Rigidbody>();
|
|
playerInput = GetComponent<PlayerInput>();
|
|
visualLook = transform.Find("VisualLook");
|
|
anim = visualLook.GetComponent<Animator>();
|
|
spriteRenderer = visualLook.GetComponent<SpriteRenderer>();
|
|
|
|
input = GetComponent<CombatInput>();
|
|
movement = GetComponent<CombatMovement>();
|
|
animator = GetComponent<CombatAnimator>();
|
|
attacker = GetComponent<CombatAttacker>();
|
|
health = GetComponent<CombatHealth>();
|
|
skillController = GetComponent<CombatSkillController>();
|
|
|
|
input.InitComponent(playerInput);
|
|
movement.InitComponent(rb, visualLook);
|
|
animator.InitComponent(anim);
|
|
attacker.InitComponent(rb);
|
|
health.InitComponent(spriteRenderer);
|
|
skillController.InitComponent(col, rb, visualLook, anim);
|
|
}
|
|
}
|
|
} |