Je suis en train de démarrer sur Unity. Je commence donc à scripter quelques trucs et je voulais faire mon propre script de contrôle du joueur (Player Controller) à l'aide d'un composant Rigidbody. Seulement, lorsque je réalise une rotation, le cube (qui représente le joueur) continue d'avancer sur l'axe Z sans prendre en compte la rotation effectuée. Si vous connaissez la solution à mon problème, je suis preneur !
Voici mon script :
using UnityEngine;
using System.Collections;
public class PlayerController : MonoBehaviour {
[SerializeField] private float movementSpeed = 5.0f;
[SerializeField] private float rotationSpeed = 5.0f;
private float verticalSpeed;
private float horizontalSpeed;
private Vector3 input;
private Vector3 rotation;
private Rigidbody rigidbody;
private Camera pCamera;
// Use this for initialization
void Start () {
rigidbody = GetComponent<Rigidbody> ();
pCamera = GetComponent<Camera>();
rotation = Vector3.zero;
}
// Update is called once per frame
void Update () {
}
void FixedUpdate() {
input.Set(Input.GetAxis ("Horizontal") * Time.deltaTime, 0, Input.GetAxis ("Vertical") * Time.deltaTime);
rotation.Set(0, Input.GetAxis ("Mouse X"), 0);
Quaternion qRotation = Quaternion.Euler (rotation * Time.deltaTime * rotationSpeed );
rigidbody.MovePosition (transform.position + input.normalized * movementSpeed);
rigidbody.rotation = Quaternion.LookRotation (rotation);
Debug.Log (input);
}
}
Il se peut qu'il ne soit plus très propre du coup.
- Edité par Alexandre Gérault 1 juin 2015 à 18:21:55
Merci de ta réponse. Je devrais donc trouver un moyen pour que mon joueur ne puisse dépasser une certaine vitesse ? Ou dois-je utiliser un autre moyen pour le faire déplacer ?
Tu devrais peut-être utiliser : AddForce(transform.TransformPosition([ton déplacement à effectuer sous forme de Vector]) * speed * Time.FixedDeltaTime);
Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.
Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre. En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.
Au lieu de déterrer un sujet il est préférable :
soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
soit de créer un nouveau sujet décrivant votre propre contexte
ne pas répondre à un déterrage et le signaler à la modération
Blog - GitHub
Blog - GitHub
Blog - GitHub