gpt4 book ai didi

unity3d - 为什么 Collider2D.Raycast 和 Collider.Raycast 如此不同?

转载 作者:行者123 更新时间:2023-12-05 08:12:47 26 4
gpt4 key购买 nike

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

Collider2D.Raycast -> 从碰撞器位置开始将光线转换到场景中,忽略碰撞器本身。

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

最佳答案

对于二维光线转换,理想情况下您应该使用 Physics2D.Raycast 方法

(来自Unity Documentation)

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);

祝你的项目好运!

关于unity3d - 为什么 Collider2D.Raycast 和 Collider.Raycast 如此不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49973372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com