유니티는 물리적인 벽을 세워놔도
렉걸려서 프레임이 떨어지거나
플레이어 이동속도가 매우 빠르든
벽과 겹치는 충돌이벤트 프레임 없이 그냥 텔레포트로 넘어가듯이 지나가는 경우가 생기잖슴
이런건 어떻게 해결해야하는거삼
프레임마다 점검을해서 벽안으로 옮겨줘야하나
유니티는 물리적인 벽을 세워놔도
렉걸려서 프레임이 떨어지거나
플레이어 이동속도가 매우 빠르든
벽과 겹치는 충돌이벤트 프레임 없이 그냥 텔레포트로 넘어가듯이 지나가는 경우가 생기잖슴
이런건 어떻게 해결해야하는거삼
프레임마다 점검을해서 벽안으로 옮겨줘야하나
물리엔진으로 가속도줘서 이동할때는 dynamic 어쩌구 옵션 설정하면 안뚫릴텐데 그냥 업데이트에서 포지션 셋해주는 거면 어떤 엔진을 써도 똑같음 너가 스윕하면서 이동하게끔 구현해야지 - dc App
물리엔진도 결국 유니티 프레임 내부에서 돌아가면서 프레임단위로 별개로 충돌 검출을 하는거 같은데 Time.fixedDeltaTime을 조절해서 물리연산 프레임수를 줄이거나 지나치게 큰 가속도값을 주거나하면 마찬가지로 그냥 다 뚫리는거 같슴다 그래도 참고가 됏슴다 감사함다
근데 제가 말한 케이스는 결국 물리연산 간격을 적절히 조절해서 해결이 가능하겟슴다 감사함다
Collision Detection를 컨티뉴오스 dynamic줘도 됨다 이거 말하신거 같슴다 이게 제가 말한 충돌 검출 간격 짧게하는거랑 비스무리하게 동작하지않을가싶슴다
https://wlsdn629.tistory.com/entry/%EC%9C%A0%EB%8B%88%ED%8B%B0-Rigidbody-Collision-Detection
감사합니다 참고하겟슴다
레이캐스트로 벽과의 거리 검사하기, 라인캐스트로 이전프레임의 내 위치와 현재프레임의 내 위치 사이에 벽이 있는지 검사하기, 포지션 업데이트가 아닌 리지드바디를 이용한 가속으로 움직이기, 캐릭터 컨트롤러 쓰기 - dc App
와 감사함다 캐릭터 컨트롤러로 그냥 제한을 두는 방법 깔끔함다 오우
단순한데 가장 아름답슴다 물론 저걸로 안되는 케이스들도 있겠지만 제 경우에는 맞아떨어짐다
결국 프레임율의 변화가 문제가 된거였으니 고정 프레임율로 연산해주는 fixedUpdate에서 포지션 변경을 해준다로 답을 내리고 만약 그래도 뚫린다면 물리엔진의 연산간격에서도 충돌 검출이 안된다는 말이니 물리연산간격 조정하여 충돌 검출이 되도록 하면 되겟다고 생각을했는데
아예 벽을 만들고자시고 의미없이 특정 범위밖으로는 이동이 안되게 하는 방법도 있었네요 감사함다
collision Detection 옵션을 손봐도 되고 다양함다
레이캐스트가 가장 무난하지 않나 싶음. - dc App