Unity/RPG Project

RPG Project - 17 [ Object 충돌 시 통과 문제 해결 - 추후 최적화 예정]

SiJun-Park 2024. 10. 23. 23:46

이번에는 캐릭터가 벽 같은 Object에 가까이 가서 비볐을 경우 통과가 되는 현상이 있다.

 

이것은 프레임 때문에 그런데, 이걸 방지하는 방법을 찾아야한다.

 

찾지 못하면 벽을 뚫고나가는 버그가 생겨 캐릭터가 밑으로 떨어질 수 있기 때문이다.

 

가장 간단한 방법은 플레이어의 Rigidbody에 Collision Dectection을 Continuous로 설정해주면 된다.

 

하지만 위와 같이 한다면 연산이 많은데 지속적으로 하게 되어 그렇게 좋지 않은 선택이다.

 

그러면 어떻게 하면 될까?

 

간단하게 Physic Material을 이용하면 된다.

 

이것은 물리적인 효과를 넣어줄 수 있는데 Bounce가 되도록 한다면 물체와 물체가 충돌한다면 밀어주는 효과를 내어 완벽히는 아니지만 어느정도는 효과를 볼 수 있는 방법이다.

 

그래서 위와같이 설정을 해준다음에 플레이어 Collider에 붙혀넣어주면 된다!

 

 

 

결과

 

 

 

    void Freeze()
    {
        int _Imask = 1 << LayerMask.NameToLayer("House") | 1 << LayerMask.NameToLayer("Monster") | 1 << LayerMask.NameToLayer("Wall") | 1 << LayerMask.NameToLayer("Wood");
        isfrontcheck = Physics.Raycast(transform.position, transform.forward, frontDistance, _Imask);
    }

이 프로젝트에서는 이미 캐릭터 앞에 집, 몬스터, 벽 같은 것이 있으면 멈추게 하였기 때문에 어느정도 막혀지긴 하지만

 

만약을 위해서 넣었습니다.

 

 

하지만 이 방법또한 연산량이 너무 많은 것이 문제입니다. 

 

나중에는 연산량을 줄이는 방법으로 바꿀 예정 입니다.