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(); } }