web-dev-qa-db-fra.com

Obtenir la position de la souris dans l'unité

J'essaie de déplacer un objet vers la position de la souris. Mais cela me donne une grande valeur x comme 300, mais à cet endroit, la position x de l'objet pré-placé est -4.

rigidBody.velocity = new Vector3(Input.mousePosition.x, EndPointY, 0)*4;

Alors, comment puis-je obtenir la position actuelle de la souris?

Je vous remercie..

6
Kim

Input.mousePosition vous donnera la position de la souris sur l'écran (pixels). Vous devez convertir ces pixels en unités universelles à l'aide de Camera.ScreenToWorldPoint () .

Vous pouvez suivre ce lien pour apprendre à faire glisser un objet 3D avec la souris ou vous pouvez copier ce code pour déplacer un objet de la position actuelle à la position de la souris.

 //the object to move
public Transform objectToMove;

 void Update()
 {
     Vector3 mouse = Input.mousePosition;
     Ray castPoint = Camera.main.ScreenPointToRay(mouse);
     RaycastHit hit;
     if (Physics.Raycast(castPoint, out hit, Mathf.Infinity))
     {
         objectToMove.transform.position = hit.point;
     }
 }
7
Gazzx

C'est la position actuelle de la souris. Le problème est que vos objets sont en coordonnées universelles et que la souris utilise les coordonnées d'écran.

Vous devez convertir la position de la souris en utilisant Camera.ScreenToWorldPoint () .

4
Ryanas