sábado, 31 de agosto de 2013

Unity - Cannot modify a value type return value of `UnityEngine.Transform.position'. Consider storing the value in a temporary variable

Este error nos da cuando intentamos cambiar el valor de uno de los ejes de algún elemento en C#
Para ello estamos usando un código al estilo:

if (transform.position.y > 26){
transform.position.y = 26;
}

y he hay nuestro error, Unity no acepta cambios directamente en uno de sus ejes, para poder llevarlo a cabo necesitaremos un código al estilo:

if (transform.position.y > 26){
Vector3 temp = transform.position;
temp.y = 26f;
transform.position = temp;
}

En donde Copiamos el vector con las posiciones de todos los ejes a una variable temporal, a la cual le cambiamos el valor del eje en cuestión(en el ejemplo el eje "y") asignándole el valor deseado, pero teniendo en cuenta que debe ser un Float, y para finalizar asignamos nuestro Vector temporal al position de nuestro elemento.

Espero os resulte de utilidad