GameDesignProject1/Assets/Scripts/PlayerController.cs

66 lines
1.6 KiB
C#

using UnityEngine;
public class PlayerController : MonoBehaviour
{
public PlayerStats BaseStats;
[Header("Movement")]
public RoomObject Room;
public float Speed;
[Header("Health")]
public int CurrentHealth;
public float OverhealDegradation;
public float OverhealAcceleration;
private float overhealTimer;
private CameraController cam;
private DungeonGenerator generator;
private Rigidbody2D rb;
private void Awake()
{
cam = FindObjectOfType<CameraController>();
generator = FindObjectOfType<DungeonGenerator>();
rb = GetComponent<Rigidbody2D>();
generator.OnDungeonRegenerated.AddListener(OnDungeonGenerated);
}
private void OnDungeonGenerated()
{
Room = generator.DungeonStartingRoom;
cam.UpdateCamera();
}
private void Update()
{
MovementTick();
OverhealTick();
}
private void MovementTick()
{
Vector2 axis = new Vector2(Input.GetAxisRaw("Horizontal"),
Input.GetAxisRaw("Vertical"));
rb.velocity = Vector2.ClampMagnitude(axis, 1) * Speed;
}
private void OverhealTick()
{
if (CurrentHealth > BaseStats.MaxHealth)
{
while (overhealTimer < 0)
{
CurrentHealth--;
overhealTimer += 1 / (OverhealDegradation + OverhealAcceleration * (CurrentHealth - BaseStats.MaxHealth));
}
overhealTimer -= Time.deltaTime;
}
else
{
overhealTimer = 1;
}
}
}