[RESOLU]Erreur de code #JS

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
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
MrBlizzarz
Messages : 12
Inscription : 21 Sep 2014 21:14

[RESOLU]Erreur de code #JS

Message par MrBlizzarz » 07 Juin 2015 18:07

Bonjour,

Etant débutant, j'ai créé un script de toute pièce via la doc. Malheureusement j'ai des erreurs dans la console qui, bizarrement me permettent de lancer quand même la simulation.
Voici mon code :

Code : Tout sélectionner

#pragma strict


var rb: Rigidbody;
var fwd = transform.forward * 100;
var right = transform.right * 100;


function Start () {
	rb = GetComponent.<Rigidbody> ();
}

function Update () {
	
	if(Input.GetKey(KeyCode.Z)){
		rb.AddForce(fwd);
	}
	if(Input.GetKey(KeyCode.S)){
		rb.AddForce(-fwd);
	}
	if(Input.GetKey(KeyCode.Q)){
		rb.AddForce(-right);
	}
	if(Input.GetKey(KeyCode.D)){
		rb.AddForce(right);
	}
	
}	
Et voici mes erreurs : (Elles vont de paires, c'est-à-dire qu'il y en a deux de chaque.)

Code : Tout sélectionner

get_transform can only be called from the main thread.
Constructor and field initializers will be executed from the loading thread when loading a scene.

ArgumentException: get_transform can only be called from the main thread.
Constructor and field initializers will be executed from the loading thread when loading a scene.
Une idée ?
Dernière édition par MrBlizzarz le 07 Juin 2015 20:49, édité 2 fois.

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Erreur de code

Message par E3DStef » 07 Juin 2015 19:10

Salut

Pense à indiquer dans ton titre de post quel langage tu utilise (Js - C#) pour cibler les dev

Ensuite faut détailler car là je ne vois pas le rapport entre le msg d'erreur (get transform) et ton script

Sinon ton message indique que GET_TRANSFORM ne peut être appelé que par l'execution principale
Donc, faut que tu nous expliques un peu plus, ton script est attaché à quel objet, etc... ?
ou sinon poste un screen.



A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
MrBlizzarz
Messages : 12
Inscription : 21 Sep 2014 21:14

Re: Erreur de code #JS

Message par MrBlizzarz » 07 Juin 2015 19:39

Mon script est associé à un rigidbody - une boule
Le but étant de chopper tout les cubes et d'aller à la fin histoire de finir quoi.

C'est un script de déplacement via AddForce c'est assez logique jusque là.
C'est ça que je ne comprends pas non plus. Quel est le rapport avec mon code sachant que je ne fais pas appel à la fonction get_transform

EDIT : J'ai réglé le soucis en retirant les variables fwd et right. J'ai fais mon transform.forward et right directement dans AddForce. Mais maintenant le déplacement sur fait sur l'axe x et z du gameobject. Comment est-ce que je peux changer ça ? je connais Space.World mais je ne sais pas comment l'utiliser.

Le nouveau code de déplacement :

Code : Tout sélectionner

#pragma strict


public var rb: Rigidbody;

function Start () {
	rb = GetComponent.<Rigidbody> ();
}

function Update () {

	if(Input.GetKey(KeyCode.Z)){
		rb.AddForce(transform.forward * 20);
	}
	if(Input.GetKey(KeyCode.S)){
		rb.AddForce(-transform.forward * 20);
	}
	if(Input.GetKey(KeyCode.Q)){
		rb.AddForce(-transform.right * 20);
	}
	if(Input.GetKey(KeyCode.D)){
		rb.AddForce(transform.right * 20);
	}
	
}	

Avatar de l’utilisateur
artemisart
Messages : 1893
Inscription : 21 Juin 2011 19:51
Localisation : Centre
Contact :

Re: Erreur de code #JS

Message par artemisart » 07 Juin 2015 20:31

Tu avais l'erreur parce que du code "dans le vide" est exécuté lors du chargement du script, qui est fait dans un autre thread, alors que tu est autorisé à accéder au transform que dans le main thread.
Si tu ne veux pas que le déplacement soit fait en local, utilise Vector3.forward/right au lieu du transform.

Avatar de l’utilisateur
MrBlizzarz
Messages : 12
Inscription : 21 Sep 2014 21:14

Re: Erreur de code #JS

Message par MrBlizzarz » 07 Juin 2015 20:48

D'accord ! Merci pour vos réponses, tout fonctionne désormais !
Je repasserai vers vous prochainement si j'ai d'autres soucis avec mes créations ;)

Verrouillé

Revenir vers « (Js) Javascript »