Untitled

 avatar
unknown
plain_text
10 days ago
2.4 kB
3
Indexable
using UnityEngine;
using UnityEngine.UI;

public class BattleRoyaleGame : MonoBehaviour
{
    public CharacterController player;
    public Transform firePoint;
    public GameObject bulletPrefab;
    public GameObject[] enemies;
    public Text healthText;
    public Text winText;

    private float moveSpeed = 5f;
    private float bulletSpeed = 20f;
    private int playerHealth = 100;
    private float enemySpeed = 2f;

    void Update()
    {
        HandleMovement();
        HandleShooting();
        EnemyAI();
        UpdateUI();
        CheckGameStatus();
    }

    void HandleMovement()
    {
        float h = Input.GetAxis("Horizontal");
        float v = Input.GetAxis("Vertical");
        Vector3 move = new Vector3(h, 0, v);
        player.SimpleMove(move * moveSpeed);
        if (move != Vector3.zero)
            player.transform.rotation = Quaternion.LookRotation(move);
    }

    void HandleShooting()
    {
        if (Input.GetButtonDown("Fire1"))
        {
            GameObject bullet = Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
            bullet.GetComponent<Rigidbody>().velocity = firePoint.forward * bulletSpeed;
            Destroy(bullet, 3f);
        }
    }

    void EnemyAI()
    {
        foreach (GameObject enemy in enemies)
        {
            if (enemy != null)
            {
                Vector3 dir = player.transform.position - enemy.transform.position;
                dir.y = 0;
                enemy.transform.position += dir.normalized * enemySpeed * Time.deltaTime;
                enemy.transform.rotation = Quaternion.LookRotation(dir);
                if (Vector3.Distance(enemy.transform.position, player.transform.position) < 1.5f)
                    playerHealth -= 1;
            }
        }
    }

    void UpdateUI()
    {
        if (healthText != null)
            healthText.text = "Health: " + playerHealth;
    }

    void CheckGameStatus()
    {
        if (playerHealth <= 0)
        {
            winText.text = "You Died!";
            Time.timeScale = 0;
        }
        else if (AllEnemiesDown())
        {
            winText.text = "Victory!";
            Time.timeScale = 0;
        }
    }

    bool AllEnemiesDown()
    {
        foreach (GameObject enemy in enemies)
            if (enemy != null) return false;
        return true;
    }
}
Editor is loading...
Leave a Comment