C# Unity 2D c中的光线投射#

C# Unity 2D c中的光线投射#,c#,unity3d,2d,raycasting,C#,Unity3d,2d,Raycasting,我是c#的新手,正在尝试找出如何让光线投射在Unity3d的新2d支持中工作 我收到错误“无法从'UnityEngine.Ray2D'转换为'UnityEngine.Vector2'” for(int i=0;i皮肤){ deltaY=dst*dir+皮肤; } 否则{ deltaY=0; } 接地=正确; 打破 } } 有人能帮我吗?请参阅文档,该方法定义为 static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, floa

我是c#的新手,正在尝试找出如何让光线投射在Unity3d的新2d支持中工作

我收到错误“无法从'UnityEngine.Ray2D'转换为'UnityEngine.Vector2'”

for(int i=0;i皮肤){
deltaY=dst*dir+皮肤;
}
否则{
deltaY=0;
}
接地=正确;
打破
}
}
有人能帮我吗?

请参阅文档,该方法定义为

static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
参数定义为

static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
原点:二维空间中光线的原点

方向:表示光线方向的向量

距离:投射光线的最大距离

layerMask:仅在某些层上检测碰撞器的过滤器

minDepth:仅包括Z坐标(深度)大于此值的对象

maxDepth:仅包括Z坐标(深度)小于此值的对象

对于
原点
,您使用的是
Ray2D
而不是
Vector2D
。如果您只需将
ray
替换为
Vector2D
即可

Physics2D.Raycast(new Vector2(x, y),out hit,Mathf.Abs(deltaY),collisionMask)
有关更多信息,请参见

参见文档,该方法定义为

static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
参数定义为

static RaycastHit2D Raycast(Vector2 origin, Vector2 direction, float distance = Mathf.Infinity, int layerMask = DefaultRaycastLayers, float minDepth = -Mathf.Infinity, float maxDepth = Mathf.Infinity);
原点:二维空间中光线的原点

方向:表示光线方向的向量

距离:投射光线的最大距离

layerMask:仅在某些层上检测碰撞器的过滤器

minDepth:仅包括Z坐标(深度)大于此值的对象

maxDepth:仅包括Z坐标(深度)小于此值的对象

对于
原点
,您使用的是
Ray2D
而不是
Vector2D
。如果您只需将
ray
替换为
Vector2D
即可

Physics2D.Raycast(new Vector2(x, y),out hit,Mathf.Abs(deltaY),collisionMask)
有关详细信息,请参阅

  • 一定要像前面代码中那样调用:

    hit=Physics2D.Raycast(光线原点、光线方向、数学绝对值(deltaY)、碰撞遮罩)

  • 此代码无效:

    if(hit!=null&&hit.collider!=null) { }

  • 但如果您需要在括号中输入一些逻辑-您不需要检查hit是否为null-它始终是一个对象,只需检查hit.collider即可

  • 一定要像前面代码中那样调用:

    hit=Physics2D.Raycast(光线原点、光线方向、数学绝对值(deltaY)、碰撞遮罩)

  • 此代码无效:

    if(hit!=null&&hit.collider!=null) { }


  • 但是如果您需要在括号中输入一些逻辑-您不需要检查hit是否为null-它始终是一个对象,只需检查hit.collider

    错误在哪一行?如果(Physics2D.Raycast(光线,out hit,Mathf.Abs(deltaY),collisionMask))错误在哪一行?如果(Physics2D.Raycast(光线,out hit,Mathf.Abs(deltaY),collisionMask))