저는 Unity에 익숙하지 않고 작은 예제를 만들고 있습니다. 사실 나는 화살 키로 움직이는 큐브를 가지고있다. 이제 나는 길에 벽을 가지고 있고, 물건을 벽에 부딪 치길 원하지만 벽을 통과합니다.다른 객체를 빠르게 지나가는 객체 이동
나는 또한이 코드를 사용했다,하지만 결과 :
http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings
저는 Unity에 익숙하지 않고 작은 예제를 만들고 있습니다. 사실 나는 화살 키로 움직이는 큐브를 가지고있다. 이제 나는 길에 벽을 가지고 있고, 물건을 벽에 부딪 치길 원하지만 벽을 통과합니다.다른 객체를 빠르게 지나가는 객체 이동
나는 또한이 코드를 사용했다,하지만 결과 :
http://www.unifycommunity.com/wiki/index.php?title=DontGoThroughThings
일반적인 개념은 개체 (들)의 마지막 위치를 추적하는 것입니다, 그들은 이동할 때 다음에서 레이 캐스팅 현재 위치를 마지막 위치로 이동합니다. 광선에 충돌이 있는지 확인하고 어떤 것이 있으면 객체를지나 갔다.
다른 개체로 이동 한 경우 현재 개체를 충돌로보고 된 위치로 설정하십시오. 다음 프레임은 충돌 이벤트를 트리거합니다.
제공하신 링크는 실제로이 작업을 수행합니다. 당신이 실제로 고정 된 양의 각 프레임에 의해, 당신은 단지 순간 이동하고 아무것도 충돌하지 않는 때문에 충돌 작동하지 않습니다
transform.velocity.x += speed * Time.deltaTime;
:
하면 같은 일을한다면. 이로 인해 실제로 개체의 텔레포트가 수행됩니다.
내 대답은 정확하지만 내 경우에는 작동하지 않는 이유를 알 수 없습니다. 그래서 나는 그 위치를 바꾸기보다는 대상에 힘을가했습니다. – sajjoo
충돌이 느린 이동 속도에서는 작동하지만 큰 동작 속도에서는 작동하지 않는 경우 코드에 문제가있을 수 있습니다. 충돌이 더 느린 속도로 작동하지 않으면 개체에 강체를 추가하지 못한 것일 수 있습니다. 힘을 통하는 것이 아니라 코드를 통해 모든 것을 옮기고 싶다면 rigidbody를'Kinematic Is Is '로 설정하면됩니다. – Justin808