0

私は iPhone と Android 用のゲームを開発していますが、さまざまな GameObjects がありGUITexture、すべてのオブジェクトのタッチ イベントのコードを記述しており、すべてが完全に機能していました。しかし、メインカメラの角度を変更した後、オブジェクトとタッチメソッドが呼び出されないGUITexture画面の隅にあるいくつかのオブジェクトと ' 。GUITexture'sそのオブジェクトを画面の中央に配置すると、タッチイベントが正常に機能することがわかりました。

タッチの場合、次のコードを使用しました:

ray = Camera.main.ScreenPointToRay(Input.mousePosition); //I can't get touch.position to work

    if(Input.GetMouseButtonUp(0)){

       if(Physics.Raycast(ray,hit,1000)){

            if(hit.collider.gameObject.name == "Sound"){

誰でも私を助けることができますか?

前もって感謝します。

4

1 に答える 1

0

「うまくいかない」と話すときは、もっと明確にする必要があります。どのようなエラーが発生しますか? 何を試しましたか?また、次回は自分のプログラミング言語をタグ付けして投稿してください。

ヒットテストで使用するタッチ位置とレイを取得するには、次のことを試してください。

if(Input.touches.Count > 0)
{
    ray = Camera.main.ScreenPointToRay(Input.touches[0].position);
    // do stuff ...
}
else
{
    Debug.Log("No touches available");
}

Input.touches最後のフレーム中のすべてのタッチのステータスを表すオブジェクトのリストを返します。各エントリは、画面に触れている指の状態を表します。

ヒットテストに関しては、 に 3 つのパラメーターがありますPhysics.Raycast

  1. レイ、またはチェックしたいライン。
  2. あなたの出力、hit.
  3. レイまたはラインの長さ。

hitあなたが正しく使用されているかどうかはわかりません。確かに、ヒットテストの前に変数をインスタンス化してみませんか?

RaycastHit hit;
    if (Physics.Raycast(ray, out hit))
        // do stuff ...

そして最後になりましたが、長さまたは光線です。それは必要ですか?上記の例では、変数を完全に除外しました。オブジェクトが 1000 単位以上離れているように、カメラを移動した可能性があります。

于 2013-05-29T13:28:04.117 に答える