C# Unity 2D c中的光线投射#
我是c#的新手,正在尝试找出如何让光线投射在Unity3d的新2d支持中工作 我收到错误“无法从'UnityEngine.Ray2D'转换为'UnityEngine.Vector2'”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
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是否为null-它始终是一个对象,只需检查hit.collider错误在哪一行?如果(Physics2D.Raycast(光线,out hit,Mathf.Abs(deltaY),collisionMask))错误在哪一行?如果(Physics2D.Raycast(光线,out hit,Mathf.Abs(deltaY),collisionMask))