PacMan/Assets/Scripts/PacMan.cs

90 lines
2.1 KiB
C#
Raw Normal View History

2025-03-16 21:57:56 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEditorInternal;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.SocialPlatforms.Impl;
2025-03-16 21:57:56 +08:00
public class PacMan : MonoBehaviour
{
public PacManInput pacManInputControl;//<2F><><EFBFBD><EFBFBD>ϵͳ
public Rigidbody2D rb;
public Animator anim;
2025-03-16 21:57:56 +08:00
public Vector2 inputDirection;//<2F><><EFBFBD><EFBFBD><EBB7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
public float speed;//<2F>ٶ<EFBFBD>
public bool die =false;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
2025-03-16 21:57:56 +08:00
public bool invincible;//<2F>޵<EFBFBD>
public float invincibleTime;//<2F>޵<EFBFBD>ʱ<EFBFBD><CAB1>
public float timer;//<2F><>ʱ<EFBFBD><CAB1>
public float remainingInvincibleTime { get; private set; }
2025-03-16 21:57:56 +08:00
private void Awake()
{
pacManInputControl = new PacManInput();//newһ<77><D2BB><EFBFBD>µ<EFBFBD><C2B5><EFBFBD><EFBFBD><EFBFBD>ϵͳ
rb = GetComponent<Rigidbody2D>();
anim = GetComponent<Animator>();
2025-03-16 21:57:56 +08:00
}
private void OnEnable()
{
pacManInputControl.Enable();
}
private void OnDisable()
{
pacManInputControl.Disable();
}
private void Update()
{
inputDirection = pacManInputControl.PacManInputSystem.Move.ReadValue<Vector2>();//<2F><>ȡ<EFBFBD><C8A1>ֵ
if (invincible)
{
PacManInvincible();
}
if (remainingInvincibleTime > 0)
{
remainingInvincibleTime -= Time.deltaTime;
}
2025-03-16 21:57:56 +08:00
}
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);//<2F>޵ж<DEB5><D0B6><EFBFBD>
}
public void PacManInvincible()
{
timer += Time.deltaTime;
GameManager.instance.invincibleTime = (int)(invincibleTime-timer+1);
if (timer >= invincibleTime)
{
invincible = false;
timer = 0f; // <20><><EFBFBD>ü<EFBFBD>ʱ<EFBFBD><CAB1>
}
2025-03-16 21:57:56 +08:00
}
public void ActivateInvincible()
{
remainingInvincibleTime = invincibleTime; // <20><><EFBFBD><EFBFBD>ʣ<EFBFBD><CAA3>ʱ<EFBFBD><CAB1>
}
2025-03-16 21:57:56 +08:00
}