Unity:如果从下面跳到它,则忽略平台的碰撞。使用 ContactFilter & rigidBody.Cast()

Unity: Ignore collision of a plateform if jump to it from below. Using ContactFilter & rigidBody.Cast()

我可以通过使用 contactFilter2D.SetLayerMask() + rigidBody2D.Cast(Vector2, contactFilter, ...);

但我没有找到避免碰撞的方法,只有当我的玩家试图从平台下方进入平台(垂直跳跃)时。 我很确定我应该使用 contactFilter2D.setNormalAngle() (在指定 minAngle 和 maxAngle 之后)但是无论我的角度大小,我都不能通过扔它。

这就是我初始化 contactFilter2D 的方式。

protected ContactFilter2D cf;

void Start () {
    cf.useTriggers = false;
    cf.minNormalAngle = 0;
    cf.maxNormalAngle = 180;
    cf.SetNormalAngle(cf.minNormalAngle, cf.maxNormalAngle);
    cf.useNormalAngle = true;      
}

void Update () {

}

我用它

count = rb.Cast(move, contactFilter, hitBuffer, distance + shellRadius);

有什么想法吗?如果您需要更多代码,请告诉我。但我认为了解这件事没有用。

unity 实际上有一个现成的组件:它是一个名为 "Platform Effector 2D" 的物理组件,如果您将它拖放到您的平台上,它会立即按照您想要的方式工作,并且它具有可调整的设置调整参数。希望这对您有所帮助!