2017-08-07 4 views
0

私は光源の内側から球にキャストしようとしています。 私の主なカメラの位置(0,0,0) 球の位置(0,0,0)半径:300 hit.positionとhit.collider.gameobjectを知りたい 私はチュートリアルの下でこれを試しています。 http://answers.unity3d.com/questions/129715/collision-detection-if-raycast-source-is-inside-a.htmlRaycastソースがColliderの中にある場合の衝突検出

チュートリアルを試みても、コンソールウィンドウからは望ましい結果が得られません。 (私のコンソールウィンドウにDebug.Logの結果はありません) どうすればいいですか?

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 

public class EyeTrackingPoint : MonoBehaviour 
{ 
    public float sphereRadius = 300; // position(0,0,0) radius 300 
    public GameObject screen3D; // sphere 

    public void Update() 
    { 
     Camera cam = Camera.main; // position(0,0,0) 
     RaycastHit hit; 
     Ray ray = new Ray(cam.transform.position,cam.transform.rotation * Vector3.forward * sphereRadius); 
     ray.direction = -ray.direction; 
     if (Physics.Raycast(ray,out hit)&&hit.collider.gameObject.Equals(screen3D)) 
     { 
      Debug.Log(hit.point); 
     } 
    } 
} 

ありがとうございます。

答えて

2

レイリーキャスティングは、これらのものに準拠している必要があります。レイがどこから始まるべきかを示すワールドポイントを使用します。その光線の方向を使用します。そして、あなたがチェックするはずの層を特定する必要があります。その上に、たとえゲームオブジェクトが正しいレイヤーにあっても、アクティブなコライダーを持たないとしても、コライダーを持つオブジェクトだけがヒットすることはありません。例。

{ 
    RaycastHit hit = Physics.Raycast(start, direction, 1000f, 1<<10); 
    } 

成功したレイキャストの情報はRaycastHitに保存されます。 1000fは、レイキャストの範囲を制限する浮動小数点値です。オブジェクトを探すまでの距離を制御できます。

Raycastでレイアースマスクを指定しないと、レイヤーに関係なく、あらゆるタイプのアクティブなコライダーで最初にヒットしたオブジェクトが返されます。