본문 바로가기
개발/C#

유니티 C# 2d 넉백 효과 간단 구현 Collider knock back

by SPNK 2024. 3. 9.
반응형

코드 작성

using UnityEngine;

public class MonsterController : MonoBehaviour
{
    public float knockbackForce = 5f; // 넉백 힘
    public float knockbackDuration = 0.5f; // 넉백 지속 시간
    private bool isKnockedBack = false; // 넉백 상태 여부를 나타내는 변수
    private float knockbackTimer = 0f; // 넉백 지속 시간을 계산하는 타이머

    private void Update()
    {
        // 넉백 상태인 경우 타이머를 업데이트하고 지속 시간이 끝나면 넉백 상태 해제
        if (isKnockedBack)
        {
            knockbackTimer -= Time.deltaTime;

            if (knockbackTimer <= 0)
            {
                isKnockedBack = false;
            }
        }
    }

    // 총알에 맞았을 때 호출되는 함수
    public void TakeDamage(Vector2 bulletDirection)
    {
        if (!isKnockedBack)
        {
            // 넉백 효과 적용
            Rigidbody2D rb = GetComponent<Rigidbody2D>();
            rb.velocity = Vector2.zero; // 현재 속도를 초기화
            rb.AddForce(-bulletDirection.normalized * knockbackForce, ForceMode2D.Impulse); // 넉백 방향으로 힘을 가함

            // 넉백 상태 설정 및 타이머 초기화
            isKnockedBack = true;
            knockbackTimer = knockbackDuration;
        }
    }
}
반응형

댓글