Problème avec un Script

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
themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Problème avec un Script

Message par themanurs17 » 16 Mars 2015 05:21

Bonjour,

J'ai regardé quelque sujet et je suis tombé sur quelqu'un qui parlait de Unity Learn.

J'ai donc suivi le début de ce cour, malheureusement, j'ai un problème avec un script.
Je ne comprend pas couramment l'anglais et donc je n'ai pas compris tout ce qu'il disait.

Je suis rendu à cette vidéo :
http://unity3d.com/learn/tutorials/proj ... the-player

Et c'est ce script là qui me pose problème :

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour 
{
	public float speed;

	void FixedUpdate ()
	{
		float moveHorizontal = Input.GetAxis("Horizontal");
		float moveVertical = Input.GetAxis("Vertical");

		Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

		rigidbody.AddForce(movement * speed * Time.deltaTime);
	}
}
Je ne comprend pourquoi mais quand j'essaye de "lancer le jeu" il me demande :
"All compiler errors have to be fixed before you can enter playmode"

Merci d'avance

Avatar de l’utilisateur
yoyoyaya
Messages : 1656
Inscription : 30 Mai 2011 13:14
Localisation : PAAAAARTOUUUU
Contact :

Re: Problème avec un Script

Message par yoyoyaya » 16 Mars 2015 08:04

themanurs17 a écrit :Je ne comprend pourquoi mais quand j'essaye de "lancer le jeu" il me demande :
"All compiler errors have to be fixed before you can enter playmode"
Dans la console, unity ne te dis pas précisément où ça plante ?
En rentrant vite fait ton bout de code dans la v5, il m'est demandé de mettre le script à jour (rigidbody.AddForce() semble être considéré comme obsolète). As-tu eu cette alerte ? En laissant unity mettre à jour le script tout seul, il modifie

Code : Tout sélectionner

rigidbody.AddForce(movement * speed * Time.deltaTime);
pour donner ça

Code : Tout sélectionner

GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime);
A partir de là, dans unity, je n'ai plus d'erreurs dans la console. Ça devrait donc être la solution à ton problème.
ImageImage

themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Re: Problème avec un Script

Message par themanurs17 » 16 Mars 2015 14:33

Je ne me souviens plus très bien comment ça c'est passé mais j'avais du faire une erreur dans le code et quand je faisais go back up c'était donc faux.
Je pensais que cela venais du script qui était modifié par Unity.

Merci beaucoup

themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Re: Problème avec un Script

Message par themanurs17 » 16 Mars 2015 14:54

J'ai encore un problème lié avec un script.
Si quelqu'un peut m'éclairer, merci d'avance.

Je suis donc le tutoriel Unity Learn.
J'en suis arrivé au script de la caméra.

Et au lieu de finir le Tuto vite fait j'aimerais savoir pourquoi son script ne suis que deux axe : x,z.
J'ai relu le code mais je ne comprend pas tout.

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class CameraControler : MonoBehaviour 
{
	public GameObject player;
	private Vector3 offset;
	// Use this for initialization
	void Start () 
	{
		offset = transform.position;
	}
	
	// Update is called once per frame
	void LateUpdate () 
	{
		transform.position = player.transform.position + offset;
	}
}
Je penserais que ça ce joue avec le "offset" mais je n'en suis pas sur et ne comprend pas pourquoi.

Merci d'avance

Avatar de l’utilisateur
F@B
Messages : 1844
Inscription : 01 Août 2013 10:41
Contact :

Re: Problème avec un Script

Message par F@B » 16 Mars 2015 15:01

à la lecture qu'est ce que tu ne comprends pas ?

Code : Tout sélectionner

      transform.position = player.transform.position + offset;
la position du gameObject qui porte le script est = à celle du gameObject player + le Vector3 offset, donc x y ET z

et pense a LIRE LA NETIQUETTE notamment pour le titre de ton sujet.
ʕ·͡ᴥ·ʔ ==> Mon Portfolio <== ʕ·͡ᴥ·ʔ

Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Re: Problème avec un Script

Message par themanurs17 » 16 Mars 2015 15:22

Oui désolé pour le titre.
Sinon c'est que la caméra ne suis que sur deux axes et je ne vois pas ce qui lui dit de faire ça.
Dernière édition par themanurs17 le 16 Mars 2015 16:50, édité 2 fois.

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

Re: Problème avec un Script

Message par boubouk50 » 16 Mars 2015 16:46

Code : Tout sélectionner

transform.position = player.transform.position + offset;
Unity utilise un système de coordonnées où x et z représente le sol et y la hauteur.
La caméra est liée à la position du joueur, qui se déplace en (x,z), à laquelle on ajoute un offset (sur les 3 axes).
Donc ta caméra se déplace comme le joueur et est décalée grâce à l'offset.
Si le joueur monte où descend, alors la caméra aussi. Elle se déplace bien sur 3 axes, mais tu ne le vois pas si le personnage se déplace sur un plan horizontal.
"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

themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Re: Problème avec un Script

Message par themanurs17 » 16 Mars 2015 16:50

Ok merci.
Si j'ai bien compris, il prend seulement les coordonnées X,Y,Z et pas la rotation.
C'était tout simple ...
Merci beaucoup

J'ai encore un problème similaire que l'ancien mais il ne me dis pas de faire un Back-Up cette fois ci.

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class PlayerController : MonoBehaviour 
{
	public GUIText winText;
	public float speed;
	public GUIText countText;
	private int count;

	void Start ()
	{
		count = 0;
		SetCountText ();
		winText = "";
	}

	void FixedUpdate ()
	{
		float moveHorizontal = Input.GetAxis("Horizontal");
		float moveVertical = Input.GetAxis("Vertical");

		Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

		GetComponent<Rigidbody>().AddForce(movement * speed * Time.deltaTime);
	}

	void OnTriggerEnter(Collider other)
	{
		if (other.gameObject.tag == "PickUp") 
		{
			other.gameObject.SetActive (false);
			count = count + 1;
			countText.text = "Count: " + count.ToString();
		}
	}

	void SetCountText ()
	{
		countText.text = "Count: " + count.ToString ();
		if(count >= 12)
		{
			winText.text = "You Win!";
	}
}
C'est après avoir ajouter public GUIText winText que le script ne fonctionne plus.

Merci encore.

themanurs17
Messages : 19
Inscription : 11 Mars 2015 00:32

Re: Problème avec un Script

Message par themanurs17 » 16 Mars 2015 20:59

Je rectifie ce que j'ai dis c'est à cause du :
winText = " ";

Que ça ne fonctionne plus.
J'ai essayer sans cela marche mais sa n'affiche pas le texte à la fin.

Merci d'avance.

Avatar de l’utilisateur
NDrew
Messages : 581
Inscription : 25 Oct 2013 15:14
Localisation : Clermont-Ferrand

Re: Problème avec un Script

Message par NDrew » 16 Mars 2015 21:52

verifie tes blocs d'accolades { }
Il faut t'assurer que tout est bien fermé.

Répondre

Revenir vers « (C#) CSharp »