Unity

3D 테스트 프로젝트 2

psb08 2025. 2. 23. 13:41
728x90
반응형

저번 시간에는 플레이어와 적을 만들었다면 이번에는 칼 공격을 만들었습니다.

 

칼을 간단하게 구한 뒤, 세팅했습니다.

 

애니메이션을 총 3개 만들었습니다. Attack1, Attack2, Idle

그리고 Trigger로 Attack1, Attack2, Idle 3개 만들었습니다.

 

SwordAttack.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SwordAttack : MonoBehaviour
{
    public Animator animator;
    public float attackRange = 1.5f;
    public LayerMask enemyLayer;
    public int attackComboMax = 2;

    private int attackCombo = 0;
    private float lastAttackTime;
    public float comboResetTime = 1.0f;
    private bool isAttacking = false;

    private void Update()
    {
        if (Input.GetMouseButtonDown(0) && !isAttacking)
        {
            Attack();
        }

        if (Time.time - lastAttackTime > comboResetTime)
        {
            attackCombo = 0;
            isAttacking = false;
            animator.SetTrigger("Idle");
        }
    }

    private void Attack()
    {
        isAttacking = true;
        attackCombo = (attackCombo % attackComboMax) + 1;
        lastAttackTime = Time.time;

        animator.SetTrigger("Attack" + attackCombo);
    }

    private void DealDamage()
    {
        Collider[] hitEnemies = Physics.OverlapSphere(transform.position, attackRange, enemyLayer);
        foreach (Collider enemy in hitEnemies)
        {
            Debug.Log("적 적중: " + enemy.name);
            Destroy(enemy.gameObject);
        }
    }

    private void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, attackRange);
    }


}

콤보수를 2로 정한 뒤, 애니메이션을 1,2까지 만들면 공격을 할 시 2까지 실행이 됩니다.

 

애니메이션 이벤트를 이용해서 공격을 할 때 DealDamage를 실행할 수 있도록 합니다.

 

 

잘 실행되고 있습니다.

'Unity' 카테고리의 다른 글

3D 테스트 프로젝트 4  (0) 2025.02.25
3D 테스트 프로젝트 3  (0) 2025.02.24
3D 테스트 프로젝트 1  (0) 2025.02.22
사운드 감지하기 2  (0) 2025.02.20
사운드 감지하기 1  (0) 2025.02.19