3

Collider.Raycast -> 投射一条忽略除此之外的所有碰撞器的射线。

Collider2D.Raycast -> 将光线投射到场景中,从对撞机位置开始忽略对撞机本身。

我想像 Collider.Raycast 一样使用它,它“忽略除此之外的所有内容”,但我现在正在使用 Collider2D,我需要投射一个光线投射并检查它是否只用指定的 Collider2D 命中,或者有没有更好的方法?

4

1 回答 1

-3

对于 2D 中的 Raycast,您最好使用 Physics2D.Raycast 方法

(来自统一文档

RaycastHit2D hit = Physics2D.Raycast(transform.position, -Vector2.up);

if (hit.collider != null) {
    float distance = Mathf.Abs(hit.point.y - transform.position.y);
    float heightError = floatHeight - distance;
    float force = liftForce * heightError - rb2D.velocity.y * damping;
    rb2D.AddForce(Vector3.up * force);
}

这应该为您提供所需的所有文档。Physics2D 类还具有许多有用的相关功能,例如圆形投射、线投射以及有关如何忽略光线投射中某些层的信息。

为了节省您的时间,这里是完整的 Physics2D.Raycast 方法,包括可选变量。

public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

祝你的项目好运!

于 2018-04-23T05:33:16.187 回答