using System.Collections; using System.Collections.Generic; using UnityEngine; public class character : MonoBehaviour { public GameObject idle; public GameObject run; public GameObject interact; public float movementSpeed; Rigidbody2D rb; GameObject latestTerminal; bool isAtTerminal = false; void Start() { rb = GetComponent(); SetupAnimations(); } void Update() { float h = Input.GetAxisRaw("Horizontal"); float v = Input.GetAxisRaw("Vertical"); Vector3 tempVect = new Vector3(h, v, 0); tempVect = tempVect.normalized * movementSpeed * Time.deltaTime; rb.MovePosition(transform.position + tempVect); AnimationsFromMovement(h, v); ToggleTerminal(h, v); } void OnTriggerEnter2D(Collider2D other) { isAtTerminal = other.CompareTag("terminal"); latestTerminal = other.gameObject; } void OnTriggerExit2D(Collider2D collider) { isAtTerminal = !collider.CompareTag("terminal"); } void SetupAnimations() { idle.SetActive(true); run.SetActive(false); } void AnimationsFromMovement(float h, float v) { string desiredAnimation = h == 0 && v == 0 ? "idle" : "run"; SetAnimation(desiredAnimation); FlipAnimations(h); } void SetAnimation(string animationName = "idle") { idle.SetActive(animationName == "idle" && !isAtTerminal); run.SetActive(animationName == "run"); interact.SetActive(animationName == "idle" && isAtTerminal); } void FlipAnimations(float h) { if (h == 0) return; bool flip = h < 0; idle.GetComponent().flipX = flip; run.GetComponent().flipX = flip; } void ToggleTerminal(float h, float v) { bool isStandingStill = h == 0 && v == 0; if (latestTerminal) latestTerminal.GetComponent().screen.SetActive(isStandingStill && isAtTerminal); } }