Vérifier si un point de Contact qui est à l'intérieur de la boîte de collider dans l'Unité
Veuillez voir les images ci-dessous.
Dans la première image, vous pouvez voir qu'il y a une boîte collider.
La deuxième image est quand je lance le code sur un appareil Android
Voici le code qui est attaché à Jouer le Jeu (son Texte 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);
}
}
}
}
}
Je veux voir si le point de contact est à l'intérieur de la collider ou pas. Je veux le faire parce que pour l'instant, si je clique n'importe où sur la scène
Application.LoadLevel(levelToLoad); il est appelé.
Je veux qu'il soit appelé que si je clique sur le JEU JEU de texte seulement. Quelqu'un peut-il m'aider avec ce morceau de code ou peut me donner une autre solution à mon problème??
Récentes Code en suivant Heisenbug Logique du
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);
}
}
}
}
OriginalL'auteur Jawad Amjad | 2013-05-08
Vous devez vous connecter pour publier un commentaire.
Contact de position est exprimée dans d'espace à l'écran du système de coordonnées (un
Vector2
). Vous avez besoin de convertir cette position dans la monde de l'espace du système de coordonnées avant d'essayer de la comparer à d'autres sites 3D des objets dans la scène.Unity3D
fournit les installations de le faire. Puisque vous utilisez unBoundingBox
entourant votre texte, vous pouvez effectuer les opérations suivantes:Ray
dont l'origine est le point de contact de la position et de la direction qui est parallèle à la caméra en avant de l'axe (De la caméra.ScreenPointToRay).BoundingBox
de votreGameObject
(De la physique.RayCast).le code peut ressembler à quelque chose comme ça:
C'est pratique pour ajouter une couche spécifique à votre "Jeu"
GameObject
, afin de rendre le rayon de collision avec elle.MODIFIER
Code et l'explication ci-dessus est très bien. Si vous n'obtenez pas un bon collision peut-être que vous n'avez pas utilisé le bon calque. Je n'ai pas une touche de l'appareil pour le moment. Le code suivant fonctionne avec la souris (sans l'aide de calques).
C'est juste un exemple pour vous mettre dans la bonne direction. Essayer de comprendre ce qui ne va pas dans votre cas ou de mettre un SSCCE.
S'il vous plaît corrigez-moi si je me trompe sur la façon d'ajouter une couche de texte 3D. 1) Sélectionnez le Texte en 3d. 2)Dans Inpector est allé à AddLayer et nommé l'Unité de la Couche de 10 à PlayGameLayer. 3)Dans l'inspecteur Tag = non balisés et de la Couche = PlayGameLayer. 4) Le script avec le code ci-dessus est fixé à PlayGame de Texte en 3d. Est-ce la bonne manière? Si oui, alors ce qui ne va pas?
Amjad: avez-vous attaché à la boîte englobante de la même GameObject qui a joint le Texte du composant?
Oui, j'ai attaché le Texte en 3D
OriginalL'auteur Heisenbug