0
在我的遊戲中,我正在繪製一條線並限制線的長度,如果它碰到任何對撞機,我正在使用raycasthit2d。但它總是不起作用。 我使用Debug.DrawRay來查看它是如何工作的,它不像我預期的那樣工作。 下面是我的代碼RaycastHit2D無法正常工作
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
來繪製線條,並將raycast作爲各自的起點和方向。
如果有人能夠指出我的錯誤或替代方法來實現這一點,這將是一個很大的幫助。
我的目標是完全按照lineRenderer繪製的線繪製光線投射線。
'endPoint'是一個Vector3變量 –
您的答案確實讓我最終找到了解決方案。那謝謝啦。我剛剛用'Vector3方向=新的Vector3(endPoint.x - startPoint.x,endPoint.y - startPoint.y,1)替換了'endpoint';' –
通過矢量,我指的是兩點之間的矢量,而不是類Vector3 。所以你在爭論中提出了一個觀點,而不是一個向量。這個問題是數學問題,而不是程序問題。對不起,我對此並不清楚。 – Greg