以下の画像を参照してください。あなたは箱コライダーがあることがわかります最初の画像でタッチポイントがユニティのボックスコライダーの内側にあるかどうかを確認する
。私はAndroidデバイスここ
上のコードを実行するとき 第二の画像は、私はタッチポイントが内側にあるかどうかを確認したいゲームをプレイするために添付されているコード(その3Dテキスト)
using UnityEngine;
using System.Collections;
public class PlayButton : MonoBehaviour {
public string levelToLoad;
public AudioClip soundhover ;
public AudioClip beep;
public bool QuitButton;
public Transform mButton;
BoxCollider boxCollider;
void Start() {
boxCollider = mButton.collider as BoxCollider;
}
void Update() {
foreach (Touch touch in Input.touches) {
if (touch.phase == TouchPhase.Began) {
if (boxCollider.bounds.Contains (touch.position)) {
Application.LoadLevel (levelToLoad);
}
}
}
}
}
されていますコライダーかどうか。私はこれをやりたいのですが、現場でどこをクリックすればいいのですか? Application.LoadLevel(levelToLoad);が呼び出されます。
PLAY GAMEテキストのみをクリックすると呼び出されます。誰でもこのコードを手助けすることができますか、私の問題に私に別の解決策を与えることができますか?タッチの位置は、システム(Vector2
)を座標スクリーン空間で表現され
void Update() {
foreach(Touch touch in Input.touches) {
if(touch.phase == TouchPhase.Began) {
Ray ray = camera.ScreenPointToRay(new Vector3(touch.position.x, touch.position.y, 0));
RaycastHit hit;
if (Physics.Raycast(ray, out hit, Mathf.Infinity, 10)) {
Application.LoadLevel(levelToLoad);
}
}
}
}
私がしたことは、選択された3dテキストであり、インスペクタでそれに割り当てられたレイヤーが選択されたことです。レイヤー番号は8でした。それから、パラメータlayerOfYourGameObjectを8として渡してコードを実行しましたが、まだ衝突は発生していません。上記の質問にコードを添付しました。 –
3Dテキストにレイヤーを追加する方法が間違っている場合は、私に修正してください。 1)[3Dテキスト]を選択します。 2)InpectorでAddLayerに行き、Unity Layer 10をPlayGameLayerに指定しました。 3)インスペクタのTag = UntaggedとLayer = PlayGameLayer。 4)上記のコードのスクリプトは、PlayGame 3d Textに添付されています。 それは正しい方法ですか?もしそうなら、何が間違っているのでしょうか? –
@Jawad Amjad:Textコンポーネントを添付した同じGameObjectにバウンディングボックスを添付しましたか? – Heisenbug