
[Header("Battery Settings")] public float dischargeRate = 1f; // 초당 감소량 private float maxCharge = 100f; // 배터리의 최대 충전량 [SerializeField] private float currentCharge; // 현재 배터리 충전량 public override void Interact(Player player) { } void Start() { currentCharge = maxCharge; // 초기 충전량 설정 StartCoroutine(DischargeBattery()); } private IEnumerator DischargeBattery() { while (currentCharge > 0) { yield return new WaitForSeconds(1f); currentCharge -= dischargeRate; currentCharge = Mathf.Clamp(currentCharge, 0, maxCharge); } }
public class FallingObstacleObject : InteractableItem { [Header("Obstacle Settings")] public Collider obstacleCollider; public NavMeshObstacle navMeshObstacle; [SerializeField] private float destroyDelay; private bool isFallen = false; public bool IsDestroyed { get; private set; } = false; public override void Interact(Player player) { if (isFallen || IsDestroyed) return; isFallen = true; DestroyObstacle(); } private void DestroyObstacle() { if (IsDestroyed) return; IsDestroyed = true; obstacleCollider.enabled = false; navMeshObstacle.carving = false; Destroy(gameObject, destroyDelay); } }