스크립트 수정 - PlayerStats.cs의 Hit 메서드 활용 (플레이어에 데미지 적용)
private IEnumerator ApplyDamage(Collider2D player) { isDamaging = true; PlayerStats playerStats = player.GetComponent<PlayerStats>(); if (playerStats == null) { yield break; } while (isDamaging) { playerStats.Hit(damagePerSecond); yield return new WaitForSeconds(1f); // 1초 간격으로 데미지 적용 } }
스크립트 적용
private void DetectAndShoot() { if (!isFlying && player != null) { float distanceToPlayerX = Mathf.Abs(player.transform.position.x - transform.position.x); float distanceToPlayerY = Mathf.Abs(player.transform.position.y - transform.position.y); bool isPlayerInPositiveDirection = player.transform.position.x > transform.position.x; bool isPlayerOnSameHeight = distanceToPlayerY <= 0.5f; // 허용 오차 0.5 if (distanceToPlayerX <= playerRange && isPlayerInPositiveDirection && isPlayerOnSameHeight) { isFlying = true; } } } private void OnTriggerEnter2D(Collider2D collision) { // 플레이어와 충돌 처리 if (collision.CompareTag("Player")) { // 플레이어에게 데미지를 준다 PlayerStats playerStats = player.GetComponent<PlayerStats>(); if (playerStats != null) { playerStats.Hit(damage); } // 화살 파괴 Destroy(gameObject); } }
오늘 장애물이 작동하지 않아 고생했는데 collider2D가 아닌 collider를 사용해서 생긴 문제였음.
-> 사소한 거.. 확인...
내일 계획