2017-11-18 12 views
0

を調整します。問題はレイキャストを呼び出すと(0,0,0)のワールド座標を指しているときですが、オブジェクトから前方に向かう方向を述べました。、私のレイキャストは常に(0,0,0)の世界を指していることは、私は車のエンジンのスクリプトを研究開発をしていると私は障害物を避けるために、レイキャストを使用したい

public float sensorLength = 10f; 
public float frontSensorPosition = 3.65f; // distance from the center of 
                //the car to its front 
public float frontSideSensorPosition = 1.1f; 

private void FixedUpdate() { 
    Sensors(); 
    ApplySteer(); 
    Drive(); 
    CheckWayPointDistance(); 
} 
private void Sensors() 
{ 
    RaycastHit hit; 
    Vector3 sensorStartPos = transform.position; 
    sensorStartPos.z += frontSensorPosition; 
    Vector3 fwd = transform.TransformDirection(Vector3.forward); 

    if (Physics.Raycast(sensorStartPos, fwd, out hit, sensorLength)) 
    { 

    } 
    Debug.DrawLine(sensorStartPos, hit.point, Color.green); 
} 

出力はこれです: https://i.imgsafe.org/00/0038d11730.png

答えて

1

あなたのコード、罰金に見える、あなたは世界空間のゼロ点にスタートPOSから線を描画しようとしている以外、理由なかれ0,0です、 0?あなたはまだ何かをヒットしていない、とレイキャストは何もヒットしなかった場合hit.pointはラインをデバッグするに0,0,0

良い方法は、私たちが何かをヒットしている?」確認することであるままになりますので、ここ

は完全な例が

private void Sensors() 
{ 
    RaycastHit hit; 
    Vector3 sensorStartPos = transform.position; 
    sensorStartPos.z += frontSensorPosition; 
    Vector3 fwd = transform.TransformDirection(Vector3.forward); 

    if (Physics.Raycast(sensorStartPos, fwd, out hit, sensorLength)) 
    { 
     //if it a surface, then Draw Red line to the hit point 
     Debug.DrawLine(sensorStartPos, hit.point, Color.red); 
    } else 
    { 
     //If don't hit, then draw Green line to the direction we are sensing, 
     //Note hit.point will remain 0,0,0 at this point, because we don't hit anything 
     //So you cannot use hit.point 
     Debug.DrawLine(sensorStartPos, sensorStartPos + (fwd * sensorLength), Color.green); 
    } 
} 

だ、それがヒットしていない場合は緑色の線を引きますが、それはまだゼロだから、我々はhit.point使用しません。

そして、それは

+0

ない場合は、私もこれが機能することを知っている私のエディタを必要としないこの作品なら、私に教え、または教えてください を打ったとき、それは赤い線を描画します。 – Draco18s

+0

残念ながら、別の問題があります。 –

+0

私は障害物で私の車を囲んでいました。最終的には衝突を見ることはありません。 ブール障害= Physics.Raycast(sensorStartPos、FWD、アウトsensorLength、ヒット)。 Debug.Log( "OBSTACLE:" + obstacle); 常にfalseを示します。 –

関連する問題

 関連する問題