2017-11-13 14 views
0

안녕하세요, RaycastAll을 사용하여 layermasks 작업과 함께 Raycasting하는 방법에 대한 작은 질문이 있습니다.Raycasting Layermask 대 RaycastAll

나는 내 물건 안에 내 광선을 투영하려고하고 광선을 원래 물건과 같은 층과 충돌하도록 layermask하기 때문에 원래의 물건 자체에서 "피해"를 무시할 필요가있다.

내 질문은 : Raycasting이 layermask를 사용할 때 다른 바람직하지 않은 레이어와의 충돌을 등록한 다음 단순히 무시하거나 처음부터 해당 레이어와의 충돌을 등록하지 않습니까? 내가 LaycastAll을 사용하여 논리적으로 레이어에 응답할지 또는 엄격히 layermasks를 사용하는지에 대한 응답을 결정하면 성능이 더 나 빠지겠습니까? 아니면 그다지 큰 차이가없는 것입니까?

나는 "당신이 그것을 물체 내부에서 던지면 그 물체와 충돌하지 않을 것"이라고 말하고 있지만 분명히 그렇습니다.

감사

답변

2

당신은 official Unity's physics preformance tutorial 좀 걸릴 수 있습니다. 우선 Raycast는 다소 저렴한 조작이지만 성능은 실제로 Raycasting을 실제로 수행하는 방식에 달려 있습니다. 예를 들어 귀하의 질문 중 하나 인 RaycastAll은 별도의 레이어에서 Raycast를 수행하는 것보다 비용이 많이 들며 위의 링크에서도 언급되어 있습니다. 그것은 물리학이 실제로 어떻게 작용하는지에 기초합니다. Unity는 물리학 자체를 구현하지 않고 대신 기존 솔루션 (PhysiX for 3d와 같은 물리학을위한 Box2d)을 사용합니다.

레이의 길이 또한 실제로 Raycast의 성능에 영향을줍니다. 짧은 광선은 당신이 얻는 더 나은 성능을 전달합니다. 최악의 경우 Raycasting이 무한대입니다. 또 다른 경우는 Collider.Raycast가 Physics.Raycast보다 저렴하다는 것입니다.

게임 개발에서 물리학 뒤에 몇 가지 수학 방정식이 더 이상 존재하지 않는다는 사실은 비밀이 아닙니다. 여러분이 가지고있는 단순한 방정식 일수록 더 좋은 성능과 시간을 얻을 수 있습니다. 그래서 Raycast는 방정식 시스템으로 취급 할 수 있습니다. 방정식 (실제 Raycast)과 방정식의 몇 가지 방정식은 평면/공간에서 2 차원/3 차원 객체를 설명하며 작업은 2 차원 평면 선 (광선) 및 기타 물체.

게임에 복잡한 물리학이없는 경우 layermask 또는 더 짧은 광선 길이를 사용하는 RaycastAll과 Raycast의 차이점을 볼 수 없지만 성능은 실제로 다릅니다.

+0

답장을 보내 주셔서 감사합니다. 솔직히 말해서 물리학이 게임에서 매우 단순하기 때문에 성능 차이를 느낄 것이라고 생각하지 않지만 한 번에 (너무 극단적 인) Raycast 스크립팅으로 많은 개체를 가질 계획이며 올바른 일을하고 싶습니다. 방법. 하지만 그것은 다음과 같은 질문을 제기합니다. 레이더 캐스팅에서 (2D) 발사되는 콜 리더를 무시하고 모든 레이어가 가능한 가장 효율적으로 가능한 경우 인접한 개체와 충돌을 일으킬 수 있습니까? (RaycastAll이 최선의 선택이 아니라고 가정 할 때) –

+0

예를 들어, RayCast에서 오브젝트를 얻을 때 가장 간단한 솔루션 중 하나를 무시하려는 오브젝트에 첨부 된 광선을 스크립트 안에 넣으면, 다음과 비교할 수 있습니다. 객체 그 자체. 하지만 실제로 게임에서 오브젝트를 구성하는 방법에 달려 있습니다. 어쩌면 개체를 별도의 레이어로 설정하거나 다른 z 좌표에서 광선을 투영 할 수 있습니다 (예 : 2d에서 raycast에 영향을 미침). – vmchar