6-6. 15조 Enum 데이터 업데이트, Battery, FallingObstacleObject

keubung·2024년 12월 3일

1. Enum 데이터 업데이트

  • 언어 추가

2. Item - Battery

  • 초당 배터리 감소
  • 맵에 배치된 배터리들은 각각 자신의 충전량을 가지고 있음.
    [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);
        }
    }

3. Item - FallingObstacleObject

  • 데바데의 판자같은 아이템
  • Bookshelf(임시)
  • 다른 아이템들과 동일하게 태블릿으로 감지하면 나타남
  • 상호작용을 통해 넘어뜨리면 길을 막고 플레이어는 지나갈 수 있지만 적은 지나가지 못함.
  • 적이 부술 수 있음.
    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);
        }
    }
profile
김나영(Unity_6기)

0개의 댓글