首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Collider2D.Raycast和Collider.Raycast如此不同?

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

Stack Overflow用户
提问于 2018-04-23 12:19:32
回答 1查看 1.5K关注 0票数 3

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

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

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

EN

回答 1

Stack Overflow用户

发布于 2018-04-23 13:33:16

对于2D形式的光线投射,理想情况下应使用Physics2D.Raycast方法

(来自Unity Documentation)

代码语言:javascript
复制
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方法,包括可选变量。

代码语言:javascript
复制
public static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);

祝你的项目好运!

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49973372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档