+ UiManager의 CombatUi, OceanUi 모두 분리 각각의 씬에서 CombatUiManager, OceanUiManager로 변경 + Ocean, OceanUi input action map 추가 및 변경 input action map, uiManager 변경에 따른 Player input 로직 변경 + CombatPlayer가 죽으면 GameOverUi 추가 + 재시작 기능 추가 + 인벤토리 Ui 수정 + 슬라임 보스 로직 및 애니메이션 수정
126 lines
5.3 KiB
C#
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);
|
|
}
|
|
}
|
|
} |