Quand on développe un jeu en 3D sur Unity, on doit souvent modifier la position d’un GameObject.
Pour cela, on peut modifier la propriété position du composant Transform, attaché à ce GameObject.
Transform.position
Transform.position est la position dans l’espace global (WorldSpace) du Transform.
C’est accessible dans l’éditeur Unity et via des scripts.
On peut modifier cette valeur pour déplacer un GameObject.
Et on peut accéder à cette valeur pour connaître la position du GameObject dans l’espace global 3D.
Exemple :
transform.position = new Vector3(7f, 0, 5f);
Mais imaginons que nous voulions seulement modifier x, comment pouvons-nous faire ?
Ce qu’il ne faut pas faire
Modifier directement Transform.position.x :
//A ne surtout pas faire !!! transform.position.x = 7.0f;
Si vous faites ceci vous aurez l’erreur suivante:
Assets\ScriptA.cs(16,9): error CS1612: Cannot modify the return value of ‘Transform.position’ because it is not a variable
Traduction:
Impossible de modifier la valeur de retour de ‘Transform.position’ car il ne s’agit pas d’une variable
Unity nous dit que l’on ne peut pas modifier directement les valeurs de ‘Transform.position’ (x,y,z).
Solution
La solution consiste à utiliser un Vector3.
x sera égale à la valeur désirée. Pour y et z, on renseigne simplement les valeurs actuelles de ‘Transform.position’.
transform.position = new Vector3(7f, transform.position.y, transform.position.z);






