[RESOLU] Bloquer la position y de la 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
Ruril
Messages : 6
Inscription : 18 Avr 2018 03:02

[RESOLU] Bloquer la position y de la caméra

Message par Ruril » 18 Avr 2018 03:06

Bonjour,
Je viens vers vous étant débutant sur unity.
Je réalise un jeu de plateforme en 3D mais en vu 2D.
Je fais donc suivre ma caméra sur mon personnage dans la hiérarchie.
Le problème c'est que lorsque mon personnage saute, la caméra saute avec lui.
J'aimerai que ma caméra reste fixe en y et ne suive qu'un mouvement horizontale c'est à dire en X.
Je suis persuadé que c'est pas un script qu'il faut passer mais je ne sais pas du tout quoi utiliser pour bloquer cette position.
Si quelqu'un pourrait m'éclairer ce serait sympa :)
Bonne journée

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bloquer la position y de la caméra

Message par boubouk50 » 18 Avr 2018 09:57

Salut,

Il faut gérer cela en script effectivement pour ne gérer que la position horizontale.
Par contre, cela dépendra de ton gamePlay.
Si les déplacements ne se font qu'horizontalement, il te suffit simplement de copier la position horizontale.
Si des déplacements nécessitent de monter ou descendre, et donc la caméra aussi, il faudra adapter pour déterminer quand la déplacer. Dans ton characterController, tu dois avoir accès à la variable jump et isGrounded. La première te permet de savoir si tu as sauté, la seconde si tu es au sol.
Ensuite, c'est à toi de déterminer le comportement. Par exemple tu peux faire ne sorte de ne bouger la caméra seulement si la différence en Y (haut/bas) est supérieure à une marge pour venir recaler la caméra au cas où.
Sans ton gamePlay, je ne peux que donner des directions.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Ruril
Messages : 6
Inscription : 18 Avr 2018 03:02

Re: Bloquer la position y de la caméra

Message par Ruril » 18 Avr 2018 10:24

Salut,
D'abord merci de ta réponse.
Je viens de faire un ptit schéma de mon jeu.
Le jeu est horizontale, on ne peut que avancer vers la droite et revenir à gauche et on saute dans ces cases là mais le jeu ne part pas en verticale après.
Moi ce que je voudrait faire, c'est que le personnage puisse effectivement sauter mais que la caméra ne saute pas avec lui. Je sais pas si je me suis fais mieux comprendre ^^
Caméra.jpg
Caméra.jpg (59.16 Kio) Consulté 4313 fois

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bloquer la position y de la caméra

Message par boubouk50 » 18 Avr 2018 10:31

boubouk50 a écrit :
18 Avr 2018 09:57
Si les déplacements ne se font qu'horizontalement, il te suffit simplement de copier la position horizontale.
Je peux pas être plus précis dans l'explication.
Tu fais un script qui récupère la position de ton personnage. Tu remplaces le Y par celui de la caméra. Et voilà.
Ou alors
Tu lies la caméra à ton personnage, et en script, tu donnes une valeur fixe à ton Y.

Dans les 2 cas, tu peux le faire en une seule ligne.
https://docs.unity3d.com/ScriptReference/Transform.html
https://docs.unity3d.com/ScriptReferenc ... ition.html
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Ruril
Messages : 6
Inscription : 18 Avr 2018 03:02

Re: Bloquer la position y de la caméra

Message par Ruril » 18 Avr 2018 11:25

Héhé, je suis vraiment un noobie ^^'
Mon code est comme ça pour l'instant

Code : Tout sélectionner

public class Cam : MonoBehaviour {

	public GameObject player;

	private Vector3 offset;

	void Start() {
		offset = transform.position - player.transform.position;
	}

	void LateUpdate()
	{
		transform.position = player.transform.position + offset;
	}
}
Il récupère donc les info de position du personnage mais je ne sais pas comment entrer dans le transform.position et bloquer celle en y...

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bloquer la position y de la caméra

Message par boubouk50 » 18 Avr 2018 12:12

Code : Tout sélectionner

public class Cam : MonoBehaviour {

	public GameObject player;
	
	private Vector3 newPos;
	private Vector3 offset;
	private float height;

	void Start() {
		//Récupération de la position locale de départ
		offset = transform.position - player.transform.position;
		//Récupération de la position y de départ du personnage (puisque l'offset sera ajoutée par la suite)
		height = player.transform.position.y;
	}

	void LateUpdate()
	{
		//Récupération de la position du personnage avec la position y initiale (donc sans le saut)
		newPos = new Vector3(player.transform.position.x, height, player.transform.position.z);
		//Affectation
		transform.position = newPos + offset;
	}
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Ruril
Messages : 6
Inscription : 18 Avr 2018 03:02

Re: Bloquer la position y de la caméra

Message par Ruril » 18 Avr 2018 12:57

Ok c'est exactement ça :)
Je viens d'apprendre comment gérer des positions merci !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6225
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Bloquer la position y de la caméra

Message par boubouk50 » 18 Avr 2018 13:12

Merci de penser à signifier aux autres membres que le sujet est résolu en éditant le titre du premier post et ajoutant [RESOLU] en début de celui-ci.
Je m'en occupe cette fois-ci.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »