using System.Collections; using System.Collections.Generic; using UnityEditorInternal; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.SocialPlatforms.Impl; public class PacMan : MonoBehaviour { public PacManInput pacManInputControl;//输入系统 public Rigidbody2D rb; public Animator anim; public Vector2 inputDirection;//输入方向的数值 public float speed;//速度 public bool die =false;//主角死亡 public bool invincible;//无敌 public float invincibleTime;//无敌时间 public float timer;//计时器 public float remainingInvincibleTime { get; private set; } private void Awake() { pacManInputControl = new PacManInput();//new一个新的输入系统 rb = GetComponent(); anim = GetComponent(); } private void OnEnable() { pacManInputControl.Enable(); } private void OnDisable() { pacManInputControl.Disable(); } private void Update() { inputDirection = pacManInputControl.PacManInputSystem.Move.ReadValue();//读取数值 if (invincible) { PacManInvincible(); } if (remainingInvincibleTime > 0) { remainingInvincibleTime -= Time.deltaTime; } } private void FixedUpdate() { Move(); PacManAnimation(); } public void Move() { rb.velocity = new Vector2(inputDirection.x * speed * Time.deltaTime, inputDirection.y * speed * Time.deltaTime); } public void PacManAnimation() { anim.SetFloat("H",inputDirection.x); anim.SetFloat("V", inputDirection.y); anim.SetBool("invincible", invincible);//无敌动画 } public void PacManInvincible() { timer += Time.deltaTime; GameManager.instance.invincibleTime = (int)(invincibleTime-timer+1); if (timer >= invincibleTime) { invincible = false; timer = 0f; // 重置计时器 } } public void ActivateInvincible() { remainingInvincibleTime = invincibleTime; // 重置剩余时间 } }