Bonjour,
J’essaye de jouer un peu avec Unity 3D. J’ai un personnage que j’aimerais déplacer sur un plan à l’aide de la souris (un peu à la Age Of Empire). Voici le script que j’ai pondu :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | using UnityEngine; public class PlayerMovement : MonoBehaviour { public float rotateSpeed = 20f; public float walkSpeed = 0.5f; void Update () { MovePlayer(); } private void MovePlayer () { Plane playerPlane = new Plane(Vector3.up, transform.position); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); float hitdist = 0.0f; if (playerPlane.Raycast(ray, out hitdist)) { Vector3 targetPoint = ray.GetPoint(hitdist); Quaternion targetRotation = Quaternion.LookRotation(targetPoint - transform.position); transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotateSpeed * Time.deltaTime); if (Input.GetMouseButtonDown(0)) { while (transform.position != targetPoint) { transform.position = Vector3.MoveTowards(transform.position, targetPoint, walkSpeed * Time.deltaTime); } } } } } |
Le joueur regarde constamment dans la direction du curseur. J’ai actuellement deux problèmes :
- Le personnage se téléporte à la position cliqué, il n’y a pas de mouvement.
- J’ai placé un cube sur mon plan afin de simuler une hauteur. Impossible de placer le personnage dessus, il ne veut bien se déplacer que sur quelque chose qui se trouve a la même hauteur que lui.
Comment faire pour résoudre mes deux problèmes ?
Merci à vous !
+0
-0