Collider.Raycast ->投射一条忽略除此之外的所有碰撞器的光线。
Collider2D.Raycast ->从碰撞器位置开始将光线投射到场景中,忽略碰撞器本身。
我想像Collider.Raycast那样使用它,它“忽略除此之外的所有内容”,但我现在使用的是Collider2D,我需要投射光线投射,并检查它是否只使用指定的Collider2D,或者是否有更好的方法?
发布于 2018-04-23 13:33:16
对于2D形式的光线投射,理想情况下应使用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);祝你的项目好运!
https://stackoverflow.com/questions/49973372
复制相似问题