我的游戏世界中的每个人都有固定有传感器形状的固定装置。当我进行光线投射时,它会碰到这些灯具,但是我只想碰到至少一个不是传感器的形状的灯具。这可能吗?
我正在使用Box2dx-C#端口。
另外,回调函数做什么?
world.PhysicsWorld.RayCast((f, p, n, fr) =>
{
fixture = f;
position = p;
return fr;
}, point1, point2);
这是我正在调用的raycast函数。该文档说,该回调可用于指定要返回的形状数量,但是我不确定如何做到这一点:
/// Ray-cast the world for all fixtures in the path of the ray. Your callback
/// controls whether you get the closest point, any point, or n-points.
/// The ray-cast ignores shapes that contain the starting point.
/// @param callback a user implemented callback class.
/// @param point1 the ray starting point
/// @param point2 the ray ending point
public void RayCast(Func<Fixture, Vector2, Vector2, float, float> callback, Vector2 point1, Vector2 point2)
{
RayCastInput input = new RayCastInput();
input.maxFraction = 1.0f;
input.p1 = point1;
input.p2 = point2;
_rayCastCallback = callback;
_contactManager._broadPhase.RayCast(_rayCastCallbackWrapper, ref input);
_rayCastCallback = null;
}
最佳答案
由于没有人回答我会给你我能想到的东西,因此提供的文档有点粗略,该函数显然依赖于另一段代码来完成实际工作,并且我不知道C#,所以我可以告诉你一切。
回调是提供结果的函数方法,您必须编写一个接受给定参数集的函数。您在调用RayCast时将该函数作为参数传递,反过来,当发现重叠时将调用您的函数,然后您的回调函数可能会返回一些值以指示是否继续进行raycast,我假设您应该返回true或假。
仅选择具有非传感器阵列的灯具的最佳选择是在回调函数中进行检查,并仅在满足该条件时才采取行动。