스텔 레이드

0530 유니티

버스창문 2025. 5. 30. 17:15

무기 발사 방식 :

1. projectile Movement 방식 : 콜라이더같은거 달고 발사

2. RayCast 방식 : 광선을 발사하는 방식

 

 

문제점

1. 부딪힐때 너무 많이 밀려남

private void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag(player))
    {
        Debug.Log("in");
        this.rb.mass = 1000; //한번 밀릴때 세게 밀리니 그냥 그 뒤로 망가짐
                             // 해결을 위해 순간적으로 무게를 늘림
        this.rb.isKinematic = true;
    }
}
private void OnCollisionExit(Collision collision)
{
    if (collision.gameObject.CompareTag(player))
    {
        Debug.Log("out");
        this.rb.mass = 65;
        this.rb.isKinematic = false;
    }
}

닿을때 isKinematic(체크 시 물리력 적용x) 체크,

떨어질때 체크 해제

 

 

2.회전을 안하고 공격함

Vector3 attackTarget = (playerTr.position - zomBieTr.position).normalized; 
//타겟 위치에서 자신의 위치를 뺀걸 정규화 : 방향
Quaternion rot = Quaternion.LookRotation(attackTarget);
//LookRotation(Vector3) : 벡터값을 받아서 쿼터니언으로 바꿔주는 함수
zomBieTr.rotation = Quaternion.Slerp(zomBieTr.rotation , rot, Time.deltaTime * 10f); 
// slerp : (곡면)보간함수, 좀 부드럽게 회전하게 하는 함수
// (자신의 rotation, 목표로 하는 rotation, 시간만큼 회전(1프레임의 회전량))

방향을 구해서 lookRotation 함수를 이용해서 쿼터니언 구하고, slerp 함수를 이용해서 부드럽게 회전하게 만듬