Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Unity 5] Script déplacement joueur - Rigidbody

Scripts en C#

1 juin 2015 à 18:20:50

Salut tout le monde !

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

  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2015 à 17:54:44

Salut.

J'ai fait des recherches et je me demande si je ne devrais pas utiliser AddTorque pour effectuer une rotation et AddForce pour déplacer mon objet.

Qu'en pensez-vous ? Si c'est bon, je veux bien des éclaircissements sur la manière de les utiliser.

Merci

  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2015 à 19:42:31

AddForce ajoute une force à l'objet. Autrement dit, si tu utilise ça, ton joueur n'aura pas une vitesse linéaire...
  • Partager sur Facebook
  • Partager sur Twitter
L'être humain, contrairement aux geeks qui ne sont de toute façon pas des êtres humains, est un animal social taillé pour vivre en "meute".
4 juin 2015 à 10:06:17

Salut.

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 ?

Merci de vos réponses

  • Partager sur Facebook
  • Partager sur Twitter
9 juin 2015 à 14:44:27

Ton script à une erreur mais je ne saurais quoi mettre à la place :/ désolé.

Au passage, si tu le veux bien, je travail sur un projet de RPG et je recherche des gens alors rejoin-moi :) Mon skype : M-Fullate Zéro

Ou sinon par mail : [Édit staff: pas de données personnelles]

-
Edité par AbcAbc6 27 août 2022 à 18:48:51

  • Partager sur Facebook
  • Partager sur Twitter
Psycho-Cutterrrr !
26 août 2022 à 9:20:22

Tu devrais peut-être utiliser : AddForce(transform.TransformPosition([ton déplacement à effectuer sous forme de Vector]) * speed * Time.FixedDeltaTime);
  • Partager sur Facebook
  • Partager sur Twitter
27 août 2022 à 18:51:19

@azizscofilde Bonjour, depuis 2015 l'auteur à certainement trouver. Merci de ne pas déterrer d'ancien sujet.

Déterrage

Citation des règles générales du forum :

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

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter