Untitled

mail@pastecode.io avatar
unknown
csharp
6 months ago
2.7 kB
2
Indexable
Never
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
 
public class Player : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 5f;
    
    public int attackDamage = 10;
    public float attackRange = 1f;
    public LayerMask enemyLayers;
 
    public int maxHealth = 100;
    public int currentHealth;
 
    public int itemsCollected = 0;
 
    private Rigidbody2D rb;
    private Animator animator;
 
    public Text healthText;
 
    private void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        currentHealth = maxHealth;
 
        healthText.text = "Health: " + currentHealth;
    }
 
    private void Update()
    {
       
        float moveX = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveX * moveSpeed, rb.velocity.y);
 
     
        if (Input.GetButtonDown("Jump") && Mathf.Abs(rb.velocity.y) < 0.001f)
        {
            rb.AddForce(new Vector2(0f, jumpForce), ForceMode2D.Impulse);
        }
 
        if (Input.GetButtonDown("Fire1"))
        {
            Attack();
        }
    }
 
    private void Attack()
    {
        animator.SetTrigger("Attack");
        Collider2D[] hitEnemies = Physics2D.OverlapCircleAll(transform.position, attackRange, enemyLayers);
        foreach (Collider2D enemy in hitEnemies)
        {
          
            enemy.GetComponent<Enemy>().TakeDamage(attackDamage);
        }
    }
 
    public void TakeDamage(int damage)
    {
        currentHealth -= damage;
        animator.SetTrigger("Hurt");
 
        if (currentHealth <= 0)
        {
            Die();
        }
 
        healthText.text = "Health: " + currentHealth; 
    }
 
    public void SetHealth(int value) 
    {
        currentHealth = value;
    }
 
    private void Die()
    {
        animator.SetTrigger("Die");
        this.enabled = false;
        Destroy(gameObject); 
    }
 
    private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.CompareTag("Item"))
        {
            itemsCollected++;
            Destroy(collision.gameObject);
        }
 
        if (collision.CompareTag("HealthPickup"))
        {
            Heal(20);
            Destroy(collision.gameObject);
        }
    }
 
    private void Heal(int amount)
    {
        currentHealth = Mathf.Min(currentHealth + amount, maxHealth);
    }
 
    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, attackRange);
    }
}