initial commit

This commit is contained in:
2026-10-12 21:28:47 +01:00
commit 6dd11d33ae
11551 changed files with 2353518 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
using UnityEngine;
[RequireComponent(typeof(Collider))]
public class HazardZone : MonoBehaviour
{
[Header("Hazard Properties")]
[SerializeField] private bool instantKill = false;
[SerializeField] private int damagePerSecond = 20;
[SerializeField] private float damageTickRate = 0.5f;
[SerializeField] private bool damageEnemies = true;
[Header("Effects")]
[SerializeField] private AudioClip burnOrPainSound;
private float nextDamageTime;
private void Awake()
{
GetComponent<Collider>().isTrigger = true;
}
private void OnTriggerStay(Collider other)
{
if (Time.time < nextDamageTime) return;
if (other.CompareTag("Player"))
{
if (PlayerHealthController.Instance != null)
{
if (instantKill)
{
PlayerHealthController.Instance.TakeDamage(PlayerHealthController.Instance.MaxHealth);
}
else
{
int damageToDeal = Mathf.RoundToInt(damagePerSecond * damageTickRate);
PlayerHealthController.Instance.TakeDamage(Mathf.Max(1, damageToDeal));
}
PlayPainSound();
}
nextDamageTime = Time.time + damageTickRate;
}
else if (damageEnemies && other.TryGetComponent<EnemyController>(out var enemy))
{
if (instantKill)
{
enemy.TakeDamage(9999);
}
else
{
int damageToDeal = Mathf.RoundToInt(damagePerSecond * damageTickRate);
enemy.TakeDamage(Mathf.Max(1, damageToDeal));
}
nextDamageTime = Time.time + damageTickRate;
}
}
private void PlayPainSound()
{
if (burnOrPainSound != null)
{
AudioSource.PlayClipAtPoint(burnOrPainSound, transform.position);
}
}
}