Files
ClickRPG/Assets/Scripts/Player.cs

72 lines
2.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Player : Character
{
[SerializeField] private float attackRange;
[SerializeField] private float attackRate;
private float lastAttackTime;
private int experience;
//[SerializeField] private GameObject attackPrefab;
public static Player Current;
//private Animator animator;
void Awake()
{
Current = this;
animator = GetComponentInChildren<Animator>();
HealthBarUI.instance.UpdateInfoPanel(experience, this.Level, this.Damage, this.MaxHp);
}
void Update()
{
if (target != null)
{
float targetDistance = Vector3.Distance(transform.position, target.transform.position);
if (targetDistance < AttackRange)
{
Controller.StopMovement();
Controller.LookTowards(target.transform.position - transform.position);
if (Time.time - lastAttackTime > AttackRate && target.GetComponent<Enemy>() != null)
{
lastAttackTime = Time.time;
Attack(target);
/*animator.SetTrigger("attack");
lastAttackTime = Time.time;
GameObject proj = Instantiate(attackPrefab, target.transform.position + Vector3.up, Quaternion.LookRotation(target.transform.position - transform.position));
proj.GetComponent<Projectile>().Setup(this);
proj.GetComponent<Projectile>().DamageTarget(target);*/
}
}
else
{
Controller.MoveToTarget(target.transform);
}
}
}
public void GainExperience(int experienceToGain)
{
experienceToGain += experience;
int experienceToNextLevel = this.Level * 100; // Example formula for leveling up
if (experienceToGain >= experienceToNextLevel)
{
LevelUp();
}
Debug.Log("Gained " + experienceToGain + " experience.");
HealthBarUI.instance.UpdateInfoPanel(experience, this.Level, this.Damage, this.MaxHp);
}
private void LevelUp()
{
Level++;
MaxHp += 10; // Increase max health
Damage += 2; // Increase damage
CurHp = MaxHp; // Restore health on level up
HealthBarUI.instance.UpdateInfoPanel(experience, this.Level, this.Damage, this.MaxHp);
Debug.Log("Leveled up to " + Level + "!");
}
}