2017-10-11 10 views
1

Ceci est mon premier problème légitime que j'ai avec le codage et je ne sais pas où trouver une réponse.Le vecteur transform.position ne change que lorsqu'il est hors scène

J'ai un objet dont j'ai besoin de me déplacer dans la dimension X au fil du temps. Voici le code suivant que j'ai.

Vector3 temp = transform.position; 
temp.x += forwardSpeed * Time.deltaTime; 
transform.position = temp; 

Lorsque je débogue, je peux voir que temp.x ne change pas. Cependant, lorsque je déplace l'objet hors de la zone de la caméra, le X commence à changer. Si ce n'est pas assez d'informations s'il vous plaît faites le moi savoir et je vais fournir plus de code ou tout ce que j'ai besoin de montrer. Merci de votre aide.

+0

Avez-vous regardé les variables que vous avez essayé de modifier 'temp.x' avec? En supposant aussi que l'exemple est complet, il n'y a pas besoin de la copie 'transform.position.x + = forwardSpeed ​​* Time.deltaTime;' <- notez que cela ne marchera que si vous ne faites que déplacer l'objet sur l'axe des x du monde. – George

+0

Lorsque je fais cela, je reçois cette erreur 'Impossible de modifier une valeur de retour de type valeur de 'UnityEngine.Transform.position'. Pensez à stocker la valeur dans une variable temporaire. J'utilise donc la temp pour changer la valeur. –

Répondre

0

Lorsque vous définissez Vector3 temp = transform.position, il renvoie une copie de la transform.position.
Dans votre cas, la bonne façon de changer la position de X devrait ressembler à ceci:

transform.position += (Vector3.right * forwardSpeed * Time.deltaTime); 

Où Vector3.right est le shorthand of writing Vector3(1, 0, 0).
De cette façon, vous vous assurez que l'instruction met à jour le vecteur transform.position, pas une copie de celui-ci.