[RESOLU][DB-AL] Mouvement personnage et caméra

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Avatar de l’utilisateur
Unbrain
Messages : 3
Inscription : 07 Août 2017 18:23
Localisation : Gap

[RESOLU][DB-AL] Mouvement personnage et caméra

Message par Unbrain » 07 Août 2017 19:54

Bonjour à tous,
je préviens que je suis débutant, et que surement ma question vous semblera bête, désolé d'avance.
Mon problème est le suivant : lors de la création d'un petit script pour déplacer mon personnage, j'ai remarqué un soucis lors de l'utilisation de celui-ci. Je m'explique, le déplacement ne se fait que par rapport à un axe X, Y ,Z, mais celui ci n'est jamais différent et ne me permet pas de déplacer librement(même si j'ajoute une rotation à mon props).Je me sens un peu coincé dans un repaire, comme si mon personnage ne voulait pas suivre la direction qu'il regarde. Ce qui amène ma question, comment peut-on faire pour que le personnage se déplace dans la direction que le props regarde (flèche bleu, axeZ) ?


Mon script:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class controllerVisitor : MonoBehaviour {
	public GameObject cubevisitor;
	public float speed = 0.001f;

	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
		checkKeys();
		
	}

	void checkKeys() {
		if(Input.GetKey(KeyCode.W)){
			transform.position += Vector3.forward * speed;
		}	
		if(Input.GetKey(KeyCode.S)){
			transform.position += Vector3.back * speed;
		}	
		if(Input.GetKey(KeyCode.A)){
			transform.position += Vector3.left * speed;
		
		}	
		if(Input.GetKey(KeyCode.D)){
			transform.position+= Vector3.right * speed;
		
		}
	}
}


Une explication un peu plus imagé :

Position 0 ( aucune action ) :
Image
Position 1 (appuie sur la touche avancé, qui entraine un mouvement vers le Z de l'axe global)
Image

le déplacement ne se fait pas en rapport avec la direction du props, je comprend le problème mais la résolution est juste compliqué pour mes débuts :gene2:

Merci de vos réponse par avance!
Dernière édition par Unbrain le 08 Août 2017 12:19, édité 1 fois.
No worries, be happy!

Avatar de l’utilisateur
Aiyor
Messages : 24
Inscription : 14 Juin 2017 12:08

Re: [DB-AL] Mouvement personnage et caméra

Message par Aiyor » 08 Août 2017 08:11

Salut

Essai d'uitliser la fonction LookAt() :

https://docs.unity3d.com/ScriptReferenc ... ookAt.html

Avatar de l’utilisateur
evereal
Messages : 109
Inscription : 06 Nov 2015 18:46

Re: [DB-AL] Mouvement personnage et caméra

Message par evereal » 08 Août 2017 08:23

Hello,

L'utilisation de Vector3.forward, Vector3.back, Vector3.left et Vector3.right utilise bien le repère global.
Si tu vx prendre ton cube comme référence, il faut utiliser transform.forward, transform.back, transform.left et transform.right.
“La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !”

Avatar de l’utilisateur
Unbrain
Messages : 3
Inscription : 07 Août 2017 18:23
Localisation : Gap

Re: [DB-AL] Mouvement personnage et caméra

Message par Unbrain » 08 Août 2017 12:18

Salut, merci de vos réponse rapide. En fouinant un peu plus l'internet, j'ai trouvé ceci : https://www.youtube.com/watch?v=ruxqMhUtk1g (si un jour une personne aussi unbrain que moi cherche à répondre à la même question) pour le faire en JS, je m'en contenterais pour l'instant, la logique reste plus ou moins la même!
No worries, be happy!

Répondre

Revenir vers « (C#) CSharp »