2017-10-24 10 views
0

を使用して明らかであるかどうかを検出は、現在、私のコードは次のようになります。Unityは:パスは、レイキャスト

Vector3 tempPos = transform.position; 
    Vector3 checkPos = new Vector3(tempPos.x, tempPos.y, Mathf.Round(tempPos.z + 1)); 
    if (Input.GetKey(KeyCode.W)) 
    { 
     Vector3 direction = checkPos - transform.position; 
     Ray ray = new Ray(transform.position, direction); 
     RaycastHit hit; 
     if (Physics.Raycast(ray, out hit)) 
     { 
      Debug.Log(hit.point); 
     } 
     Debug.DrawRay(transform.position, direction, Color.black, 20, false); 
    } 

をしかし、私は、右のオブジェクトに対して最大だ場合でも、私は私のDEBUG.LOG()文から何も得ます。実際には、何も表示されないので、Debug.DrawRay()ステートメントを呼び出すことさえできません。私は間違っていますか?どんな助けもありがとう。前もって感謝します!

+0

はそれが可能tempPos.z + 1であるが、まだあなたのメッシュの内側に表示され、あなただけのカント線を_see_? – Bejasc

+0

これは 'update()'ループですか?このコードはどこですか? 'if'ステートメントの外でも、そのコードのどこにでも' Debug.Log'を置くとヒットしません。この問題は、コード自体がどこにあるのかと思われます。 –

+0

@MaxvonHippel https://hastebin.com/vupiyidaqi.cs <<これはPlayerController.csクラス全体です。問題のメソッドはvoidです。MovePlayer() –

答えて

0

小さなスニペットから問題を知っていますが、試みることができるハード:

Vector3 fwd = tempPos.transform.TransformDirection(Vector3.forward); 
if (Physics.Raycast(raycastObject.transform.position, fwd, out objectHit, 50)) 
{ 
    Debug.Log("Hit"); 
} 
関連する問題