using Photon.Pun; using System.Collections; using System.Collections.Generic; using UnityEngine; public class Charge : MonoBehaviour { //General information public int id; private int actorNumber; public int ActorNumber { get => actorNumber; set { if (value == -1) actorNumber = 0; else actorNumber = value; UpdatePlayerMaterial(); } } //Gameplay public float Speed { get; set; } public void UpdateCharge(float tickRate) { Vector3 dir = new Vector3(0, Speed, 0) * Time.deltaTime * tickRate; transform.Translate(dir); } public bool HasReached(Circuit receiver) { float dist = Vector3.Distance(transform.position, receiver.transform.position); float maxDist = chargeRenderer.bounds.extents.magnitude; return dist < maxDist; } //Called by Unity void Start() { } void Update() { if (Game.Instance) { if (!PhotonNetwork.IsMasterClient && Game.Instance.IsPlaying && !PhotonNetwork.MasterClient.IsInactive) UpdateCharge(Game.Instance.tickRate); } } //Everything Visual private Renderer chargeRenderer; private void Awake() { chargeRenderer = GetComponent(); } private void UpdatePlayerMaterial() { chargeRenderer.material = ColorManager.GetChargeBy(ActorNumber); } }