2016-12-29 5 views
2

申し訳ありませんが、ここに私のコードです。これは本当にシンプルなはずですが、何らかの理由で私と一緒に働きたくありません。 Raycastはマウスからレイを送信します。タグ付きのオブジェクトに当たった場合は、変数に数値を割り当てます。オブジェクトにヒットしない場合は、変数を-99として設定します。何らかの理由で地雷がぶら下がっている:Elseステートメントは単一では機能しませんか?

A.私はオブジェクトをヒットしない、それは-99初めて出力が、その後は4

BIオブジェクトをヒットし、それが意志割り当てられたばかりでハングうまく動作します。オブジェクトをオフにした後、以前にヒットしたオブジェクトの変数にハングアップします。

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

public class GameFunctions : MonoBehaviour { 

int Hitnum = -99; 
void Start() { 
    } 

    void Update() { 

     if (Input.GetMouseButtonDown (0)) { 
      objectCheck(); 
     } 

    } 
    //end of UPDATE function 



public void objectCheck() { 
     RaycastHit hit; 
     Ray ray = camera.ScreenPointToRay (Input.mousePosition); 
     if (Physics.Raycast (ray, out hit, 10000.0f)) { 
      if (hit.collider.tag == "Box") { 
       Hitnum = 1; 
      } else if (hit.collider.tag == "Sphere") { 
       Hitnum = 2; 
      } else if (hit.collider.tag == "Pyramid") { 
       Hitnum = 3; 
      } else if (hit.collider.tag == "Trapezoid") { 
       Hitnum = 4; 
      } else { 
       Hitnum = -99; 
      } 
     } 
     Debug.Log (Hitnum); 
    } 
    //end of check 

} 

ありがとうございます。それは簡単でなければならないので、これは私にナットを運転しています。

EDIT:今回は完全なコードを投稿しました。私は、タグ付きの他のオブジェクトがないことを言及する必要があります、それはちょうど空白です。これは子供のための非常に基本的な形の識別子であると考えられていました。

編集:編集:あなたがオブジェクトに当たっていない場合は、-99を出すことが期待されます。後で私はおそらく数字で何かをするだろうが、今私はこれを修正する必要があります。

+0

完全なコードを投稿できますか? –

+0

質問を編集して、何が起こっているのかを明らかにし、現在起こっていることを述べる必要があります。あなたはそれをしなかったし、これは実際に答えるのが難しいでしょう。現在の質問では、誰もあなたが何を期待するかは分かりません。また、どの機能が呼び出されているか教えてください。 – Programmer

+0

1.最初のif(Physics ...)にもう1つ追加して、Hitnumに一定値を与えて、それが固着しているかどうかを確認することができますか? 2.変数が上書きされたかどうかを知るためには、変数を上書きするのではなく変数を増やすことができます。変数がどこにあるのか知ることができます。スイッチケースのステートメントに? – Kev1n91

答えて

1

再起動すると、すべて正常に機能します。ありがとう。私の設定を見て、何が変わったのかを見ました。私は以前、背景タグを持った背景を削除しました。レイ・キャストにヒットしないと、最後にヒットしたオブジェクトが得られると私は結論づけましたか?

+1

Raycastが何もヒットしなかった場合、(Physics.Raycast(ray、out hit、10000.0f))がfalseを返し、Hitnumが古い値を保持する場合は、最初のif文を入力しません。したがって、最初のifステートメント –

+1

のswitch(myString){case "Sphere":... case "Pyramid":.. case null:...}を実行した後にelse文が必要になります。コードにやさしい –

関連する問題