반응형
코드 작성
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;
}
}
}
반응형