Raycasting pour trouver clic de souris sur l'Objet dans l'unité jeux 2d
Je suis en train d'essayer de supprimer l'objet sur lequel la souris est cliqué. Je fais un jeu en 2D à l'aide de la nouvelle Unity3D 4.3. Voici le code que j'utilise
void Update () {
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
isHit = false;
Destroy(GameObject.Find(hit.collider.gameObject.name));
}
}
}
Le contrôle n'est pas saisie de l'intérieur si la boucle. (isHit
n'est pas définie comme faux).
Fait l'objet d'un collisionneur? A-t-elle un collisionneur et un rigidbody?
Oui, il contient un collisionneur et un rigidbody
J'ai utilisé Physics2D et ça marche!!!! C'est le code modifié Ray ray = Camera.principal.ScreenPointToRay(D'Entrée.mousePosition); Vector2 origine = new Vector2(ray.de l'origine.x,de rayons.de l'origine.y); RaycastHit2D hit = Physics2D.Linecast(origine-Vector2.jusqu',1 << LayerMask.NameToLayer("Support")); Détruire(hit.collider.gameObject), Mais la quand même, quand je clique sur d'autres endroits que l'objet est supprimé.. je pense que le problème est avec le raycast direction -Vector2... quelle direction dois-je le jeter ??
pas vraiment partie de ce que vous avez demandé, mais cette ligne:
Je ne peux pas utiliser cette condition en raison de l'erreur. Il a dit, "impossible de convertir de 'UnityEngine.Ray UnityEngine.vector2'." Même que Ray ray.
Oui, il contient un collisionneur et un rigidbody
J'ai utilisé Physics2D et ça marche!!!! C'est le code modifié Ray ray = Camera.principal.ScreenPointToRay(D'Entrée.mousePosition); Vector2 origine = new Vector2(ray.de l'origine.x,de rayons.de l'origine.y); RaycastHit2D hit = Physics2D.Linecast(origine-Vector2.jusqu',1 << LayerMask.NameToLayer("Support")); Détruire(hit.collider.gameObject), Mais la quand même, quand je clique sur d'autres endroits que l'objet est supprimé.. je pense que le problème est avec le raycast direction -Vector2... quelle direction dois-je le jeter ??
pas vraiment partie de ce que vous avez demandé, mais cette ligne:
Destroy(GameObject.Find(hit.collider.gameObject.name));
trouver n'est pas nécessaire. Simplement en faisant Destroy(hit.collider.gameObject);
devrait fonctionner parfaitement.Je ne peux pas utiliser cette condition en raison de l'erreur. Il a dit, "impossible de convertir de 'UnityEngine.Ray UnityEngine.vector2'." Même que Ray ray.
OriginalL'auteur Bimal Bose B S | 2013-12-14
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas utiliser la 3D physique fonctions sur le nouveau 2D choses. Utiliser le Fonctions 2D à la place. Exemple:
OriginalL'auteur Esa
Cette question est un peu vieux, mais je cherchais un moyen d'obtenir un GameObject avec un clic de souris dans l'unité 2D, et la Réponse de l'Esa presque m'a aidé, mais je ne pouvais pas se permettre de le faire fonctionner, donc avec un peu de recherche j'ai vu que la Caméra.principal.ScreenToWorldPoint était de retour au centre de la zone de l'écran de l'Appareil photo et il marche droit. il requis pour saisir la différence de la position Z de la caméra et de la station de GameObject. Mon Appareil a été configuré par défaut en -10 et mon GameObject était à 0, donc tout ce que je nécessaire à faire est de définir mon Entrée.mousePosition.z-10. Si vous obtenez de problème à travailler avec l'Esa code (comme moi: - ( ) le code ci-après pourront vous aider:
OriginalL'auteur Wylht Heartless
Première joindre n'importe quel type de 2D collisionneur de votre GameObject, puis choisissez l'une de ces solutions;
1er Cas - Si il y a plus de 1 GameObject sur le dessus les uns des autres, et vous essayez de comprendre les GameObject est cliqué:
2e Cas Si il est à seulement 1 GameObject, et vous essayez de comprendre si il est cliqué:
OriginalL'auteur Ahmet Hayrullahoglu
Vous avez pour joindre un mesh collider(tout collider) avec votre objet premier à entrer dans l'intérieur Si. Ensuite,
va simplement faire le travail.
Il y a peut-être un autre travail autour d'ici.
OriginalL'auteur Reaz Murshed