私はUpdate()
の方法でPhysics.Linecast
の方法を使用して、レーシングゲームの次点ポイントまでの距離を判断しています。このコードは、プレーヤーの変換位置から線をキャストし、次のウェイポイントのメッシュ上の最も近い点をターゲットにします(ClosestPointOnBounds
を使用)。ランダムにターゲットを失うラインキャスト
これは最初の2つのウェイポイントでは完全に機能しますが、2番目と3番目のポイントの間のある時点で機能が停止します(null参照?
これは完全に困惑してしまった。ラインキャストは、ちょっと見た目ポイント3をしばらく前に投げてからランダムに「失望」してしまいました...なぜ、それがしばらく働いているのかわかりません!
キャストした後、デバッグ描画線を5秒間最後にしました。だから、あなたが表示されます下の画像に:ウェイポイント2に成功
ラインに向けてキャスト
ラインに成功ウェイポイント3に向けてキャストされ始め
突然の線はもはやに向けて投げていないされていますウェイポイント3
// Update is called once per frame
void Update()
{
Vector3 raycastStart = new Vector3 (transform.position.x, transform.position.y + 1, transform.position.z);
// NOTE: nextWayPoint is a gameObject, populated by referencing the relevant index position in the waypoints array
if (nextWayPoint != null)
{
// Cast a ray from the player's position towards the mesh collider of the next waypoint...
RaycastHit hit;
Physics.Linecast(raycastStart, nextWayPoint.GetComponent<MeshCollider>().ClosestPointOnBounds(transform.position) - transform.position, out hit, waypointsLayer);
// Render this line so we can see it...
Debug.DrawLine(raycastStart, hit.point, Color.red, 5f);
// Populate the distance variable with the length of the ray
disToNextWayPoint = hit.distance;
}
正しい方向のアイデア、思考または一般的なナッジは、この時点で私を狂気から救うでしょう!
ようこそStackOverflow。あなたが持っている問題のコードスニペットを投稿した場合に役立ちます。ご質問がある場合はお知らせください。 – Matt
ありがとうございましたMatt :)問題のコードを含めるように私の編集部を編集しました。 –
好奇心の疎外さから、あなたはnextWayPointのポジションからあなたのポジションを引き離しているのはなぜですか?私が理解しているように、LineCastはVector3の終わりが開始位置に対して相対的ではないと予想しています。 – Kolichikov