在我的游戏中,我画一条线并限制线的长度,如果碰到任何对撞机,我使用的是raycasthit2d。但它始终不起作用。 我使用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
我附上了截图。
我正在使用startPoint
和endPoint
来绘制线条,并将光线投射作为相应的起点和方向。
如果有人可以指出我的错误或其他方法来实现这一点,那将是一个很大的帮助。
我的目标是完全按照lineRenderer绘制的线绘制光线投射线。
答案 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给出一个标准化的向量。