私のゲームでは、私はラインを描いており、ラインの長さを制限しています。もしコライダーに当たったら、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
を使ってラインを描画し、それぞれのスタートポイントと方向としてレイキャストを与えます。
誰かが私の間違いやこれを達成するための別の方法を指摘できる場合は、大きな助けになります。
私の目標は、lineRendererによって描画された線とまったく同じようにレイキャスト線を描画することです。
「endPoint」はVector3変数 –
あなたの答えは結局解決に至りました。ほんとありがと。 –
ベクトルでは、クラスVector3ではなく、2点間のベクトルを意味します。 。だから、あなたはベクトルの代わりに引数にポイントを与えていました。問題は数学的でプログラム的ではありませんでした。申し訳ありませんが、私はそれについて十分に明確ではありませんでした。 – Greg