无法使RaycastHit2D正常工作

时间:2017-02-02 23:48:20

标签: c# unity3d unity5 raycasting

在我的游戏中,我画一条线并限制线的长度,如果碰到任何对撞机,我使用的是raycasthit2d。但它始终不起作用。 enter image description here 我使用Debug.DrawRay来查看它是如何工作的,它并没有像我期望的那样工作。 以下是我的代码

float distance = Vector3.Distance(startPoint, endPoint);
RaycastHit2D hit = Physics2D.Raycast(startPoint, endPoint,distance, layerMask :1 << 8);
Debug.DrawRay(startPoint,endPoint,Color.red,40f);
Debug.Log("startPoint" + startPoint + " endPoint:" + endPoint+" distance:"+distance);
if (hit.collider != null/* && hit.collider.CompareTag(GameConstants.TAG_OF_RESTRICT_LINES_OVER_PLAYER)*/)
{
    Debug.Log(hit.collider.gameObject.name);
    endPoint = hit.point;
    Debug.Log(" :hit:" + hit.point);
}
Vector3[] array = new Vector3[] { startPoint, endPoint };
lr.SetPositions(array);

控制台输出

startPoint(-4.9, -2.7, 1.0) endPoint:(1.1, -3.7, 1.0) distance:6

我附上了截图。

我正在使用startPointendPoint来绘制线条,并将光线投射作为相应的起点和方向。

如果有人可以指出我的错误或其他方法来实现这一点,那将是一个很大的帮助。

我的目标是完全按照lineRenderer绘制的线绘制光线投射线。

1 个答案:

答案 0 :(得分:1)

我认为问题在于你给了Physics2d.Raycast错误的参数。 这是doc的链接: https://docs.unity3d.com/ScriptReference/Physics2D.Raycast.html

在您的代码中,第二个参数无效:

    arm-none-eabi-gcc ${cross_toolchain_flags} -D__weak=__attribute__((weak)) -D
__packed=__attribute__((__packed__)) -D
USE_HAL_DRIVER -D

第二个参数是一个向量,你给它一个点。您应该根据startPoint和endPoint给出一个标准化的向量。