Shoot-N-Slash/Assets/Scripts/Systems/PlayerSwitcher.cs

62 lines
1.9 KiB
C#

using System;
using TMPro;
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.UI;
public class PlayerSwitcher : MonoBehaviour
{
[SerializeField] private CinemachineCamera cam;
[Header("Players")]
[SerializeField] private Player player1;
[SerializeField] private AutomatedPlayer player1AI;
[SerializeField] private Player player2;
[SerializeField] private AutomatedPlayer player2AI;
[Header("Switch Cooldowns")]
[SerializeField] private float switchCooldown;
private float currentSwitchCooldown;
[Header("UI")]
[SerializeField] private TextMeshProUGUI mainPlayerText;
[SerializeField] private TextMeshProUGUI nonPlayerText;
[SerializeField] private Image mainPlayerIcon;
[SerializeField] private Image nonPlayerIcon;
[SerializeField] private Transform mainPlayerHealthBar;
[SerializeField] private Transform nonPlayerHealthbar;
private void Update()
{
if (Input.GetKeyDown(KeyCode.E) && currentSwitchCooldown <= 0f)
{
SwitchPlayers(player1, player1AI, player2, player2AI);
currentSwitchCooldown = switchCooldown;
}
if (currentSwitchCooldown > 0f)
{
currentSwitchCooldown -= Time.deltaTime;
}
}
public void SwitchPlayers(Player playerA, AutomatedPlayer playerAAI, Player playerB, AutomatedPlayer playerBAI)
{
cam.Follow = playerB.transform;
playerAAI.enabled = true;
playerA.enabled = false;
playerB.enabled = true;
playerBAI.enabled = false;
(playerB.transform.position, playerAAI.transform.position) = (playerAAI.transform.position, playerB.transform.position);
player1 = playerB;
player1AI = playerBAI;
player2 = playerA;
player2AI = playerAAI;
mainPlayerText.text = playerB.name;
nonPlayerText.text = playerA.name;
mainPlayerIcon.sprite = playerB.stats.icon;
nonPlayerIcon.sprite = playerA.stats.icon;
playerA.stats.healthBar = nonPlayerHealthbar;
playerA.stats.UpdateHealthBar();
playerB.stats.healthBar = mainPlayerHealthBar;
playerB.stats.UpdateHealthBar();
}
}