2016-12-06 10 views
1

このコードでは、 "Player"がオブジェクトに当たったときにオブジェクトのタグを表示できますが、どのようにして衝突前にタグを表示させることができますか?例えば、プレーヤーがオブジェクトの3メートル先に立っているときなどです。衝突の前にオブジェクトを表示

private bool showInfo = false; 

void OnCollisionEnter(Collision col) 
{ 

    if (col.gameObject.tag == "Player") 
    { 
     showInfo = true; 
    } 

} 

void OnCollisionExit(Collision collisionInfo) 
{ 

    if (collisionInfo.gameObject.tag == "Player") 
    { 
     showInfo = false; 
    } 
    } 

void OnGUI() 
{ 

    if (showInfo) 
    { 
     GUIStyle myStyle = new GUIStyle(); 

     Font myFont = (Font)Resources.Load("Fonts/comic", typeof(Font)); 
     myStyle.font = myFont; 

     myStyle.fontSize = 24; 

     myStyle.normal.textColor = Color.red; 

     GUI.Label(new Rect(10, 10, 100, 20), gameObject.tag, myStyle); 
    } 

} 

答えて

2

有効トリガオプション付きaditionalコライダーを作成し、コライダーよりもそれを大きくする(あなたは事前に衝突を検出したいサイズに)とOnTriggerEnter関数を呼び出します。

void OnTriggerEnter(Collision col) 
{ 

    if (col.gameObject.tag == "Player") 
    { 
     showInfo = true; 
    } 

} 

それとも..あなたはVector3.distance(Vector3 obj1, Vector3 obj2)でオブジェクトの更新にプレイヤーまでの距離を確認することができ、それが3メートル未満がtrue

+1

thx、それは多くの助け:) – artur47wien

1

showInfoを設定するかどうDriconmaxのソリューションは、私がしたい方法ですそれ。

しかし、別の解決方法を提供するには、動きの方向に3mの長時間のレイキャストを作成し、ヒットが登録されている場合はそのオブジェクト情報を表示します。しかし、私はほとんどの場合、サブパソリューションthatsと思う