Comment détecter le toucher sur un objet de jeu
Je suis en train de développer un jeu sur l'Unité pour les appareils iOS. J'ai mis en place le code suivant pour touch:
void Update () {
ApplyForce ();
}
void ApplyForce() {
if (Input.touchCount > 0 && Input.GetTouch (0).phase == TouchPhase.Began) {
Debug.Log("Touch Occured");
}
}
J'ai traîné ce script sur mon jeu de l'objet est une sphère. Mais le message du journal apparaît n'importe où que je touche. Je veux détecter le toucher uniquement lorsque l'utilisateur touche l'objet.
pour ce très vieux AQ .. moderne de l'Unité: stackoverflow.com/questions/40323677/...
OriginalL'auteur Ashish Beuwria | 2014-01-28
Vous devez vous connecter pour publier un commentaire.
coller le code ci-dessous dans votre appareil photo, ou quelque chose d'autre qui va persister dans le niveau que vous êtes en train de concevoir. Il peut être n'importe quoi, même vide gameobject. La seule chose importante est qu'il n'existe qu'une FOIS dans votre niveau, sinon vous aurez de multiples toucher des contrôles en cours d'exécution au même moment, ce qui entraîne des au sérieux lourde charge sur le système.
Dans le script ci-dessus,
hit.transform.gameObject.Name == "myGameObjectName"
peut être remplacé par toute autre méthode que vous souhaitez vérifier que l'objet frappé par le raycast est l'objet que vous souhaitez appliquer une force. Une méthode simple est de Tags par exemple.Une autre chose à garder à l'esprit est que raycast viendra à votre appareil photo (à la position relative du bout des doigts le toucher) et cliquer sur le premier objet avec un collisionneur. Donc, si votre objet est caché derrière quelque chose d'autre, vous ne serez pas en mesure de le toucher.
Aussi mettre le script ci-dessous dans votre toucher de l'objet (dans cet exemple, appelé TouchObjectScript.cs)
Si quelque chose n'était pas clair, ou si vous avez besoin d'aide, laissez un commentaire et je vais revenir à vous.
Est-il un problème si je joindre ce script à ma sphère ou le jeu de l'objet? Que penser de l'utilisation
collider.Raycast
au lieu dePhysics.Raycast
? et qu'est-ce que screenPos? J'ai utiliséInput.GetTouch (0).position
en place de celle-ci.Je l'ai attaché à la caméra et il a travaillé. Maintenant, je suis le point pourquoi le script doit être relié à l'appareil photo à la place de l'objet lui-même, que le rayon intégré de l'appareil photo pour frapper l'objet.
erreur CS1061: Type
UnityEngine.RaycastHit' does not contain a definition for
gameObject' et aucune méthode d'extensiongameObject' of type
UnityEngine.RaycastHit' a pu être trouvé (vous manque une directive using ou une référence d'assembly?)ne sais pas comment c'est passé inaperçu pendant si longtemps... j'ai mise à jour de ma réponse, merci
OriginalL'auteur Steven Mills
La meilleure façon de le faire est de simplement ajouter:
pour le gameobject vous voulez être cliqué.
Le problème avec ceci est que vous ne pouvez pas appuyer sur 2 choses à la fois.
OriginalL'auteur Wiebren de Haan