Collider.Raycast -> 投射一条忽略除此之外的所有碰撞器的射线。
Collider2D.Raycast -> 将光线投射到场景中,从对撞机位置开始忽略对撞机本身。
我想像 Collider.Raycast 一样使用它,它“忽略除此之外的所有内容”,但我现在正在使用 Collider2D,我需要投射一个光线投射并检查它是否只用指定的 Collider2D 命中,或者有没有更好的方法?
Collider.Raycast -> 投射一条忽略除此之外的所有碰撞器的射线。
Collider2D.Raycast -> 将光线投射到场景中,从对撞机位置开始忽略对撞机本身。
我想像 Collider.Raycast 一样使用它,它“忽略除此之外的所有内容”,但我现在正在使用 Collider2D,我需要投射一个光线投射并检查它是否只用指定的 Collider2D 命中,或者有没有更好的方法?
对于 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);
祝你的项目好运!