OldBlueWater/BlueWater/Assets/02.Scripts/Character/CombatPlayer2D/CombatPlayer.cs
NTG 7a2b5e9d02 Closes #255 거대 슬라임 보스 추가
+ UiManager의 CombatUi, OceanUi 모두 분리
각각의 씬에서 CombatUiManager, OceanUiManager로 변경
+ Ocean, OceanUi input action map 추가 및 변경
input action map, uiManager 변경에 따른 Player input 로직 변경
+ CombatPlayer가 죽으면 GameOverUi 추가
+ 재시작 기능 추가
+ 인벤토리 Ui 수정
+ 슬라임 보스 로직 및 애니메이션 수정
2024-05-12 06:29:16 +09:00

126 lines
5.3 KiB
C#

using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
// 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 flashWhiteSpriteRenderer;
[SerializeField] private CombatInput input;
[SerializeField] private CombatMovement movement;
[SerializeField] private CombatAnimator animator;
[SerializeField] private CombatAttacker attacker;
[SerializeField] private CombatHealth health;
[SerializeField] private CombatSkillController skillController;
[SerializeField] private CombatStatus combatStatus;
// 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.OnStartDash += health.HandleDisableTakeDamage;
movement.OnEndDash += skillController.HandleEnableSkill;
movement.OnEndDash += health.HandleEnableTakeDamage;
// 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.OnStartSkill += health.HandleDisableTakeDamage;
skillController.OnEndSkill += movement.HandleEnableMoveAndDash;
skillController.OnEndSkill += attacker.HandleEnableAttack;
skillController.OnEndSkill += health.HandleEnableTakeDamage;
}
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.OnStartDash -= health.HandleDisableTakeDamage;
movement.OnEndDash -= skillController.HandleEnableSkill;
movement.OnEndDash -= health.HandleEnableTakeDamage;
// 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.OnStartSkill -= health.HandleDisableTakeDamage;
skillController.OnEndSkill -= movement.HandleEnableMoveAndDash;
skillController.OnEndSkill -= attacker.HandleDisableAttack;
skillController.OnEndSkill -= health.HandleEnableTakeDamage;
}
// Init
[Button("셋팅 초기화")]
private void InitComponent()
{
col = GetComponent<Collider>();
rb = GetComponent<Rigidbody>();
playerInput = GetComponent<PlayerInput>();
visualLook = transform.Find("VisualLook");
anim = visualLook.GetComponent<Animator>();
flashWhiteSpriteRenderer = visualLook.GetComponent<SpriteRenderer>();
input = GetComponent<CombatInput>();
movement = GetComponent<CombatMovement>();
animator = GetComponent<CombatAnimator>();
attacker = GetComponent<CombatAttacker>();
health = GetComponent<CombatHealth>();
skillController = GetComponent<CombatSkillController>();
combatStatus = GetComponent<CombatStatus>();
input.InitComponent(playerInput);
movement.InitComponent(rb, visualLook);
animator.InitComponent(anim);
attacker.InitComponent(rb);
health.InitComponent(flashWhiteSpriteRenderer);
skillController.InitComponent(col, rb, visualLook, anim);
}
}
}