Jump to content
Sign in to follow this  
NicoRueda

Problema con linea de código

Recommended Posts

Buenas, siguiendo un tutorial para aplicar que la cámara principal siga el movimiento del jugador me encontré con esta línea y no sé exactamente como traducirlo a pseudocodigo/lenguaje humano ya que nunca me lo había encontrado así (mi instinto dice que es un if, si me echáis una mano será de ayuda) .

float moveSPeed = rb.velocity.magnitude > cameraSPeed ?
rb.velocity.magnitude : cameraSpeed;

 

gracias de antemano

Share this post


Link to post
Share on other sites

@NicoRueda necesitamos más información que la única línea donde esta el error, podrías escribir el error q te sale y un poco de mas codigo.

Otra cosa cuando escribas un post hay una opcion de añadir codigo, asi es mas facil, lo tienes que ajustar en modo c\c++\c# o java si codeas en java.

 

Share this post


Link to post
Share on other sites
5 minutes ago, KevinLastra said:

@NicoRueda necesitamos más información que la única línea donde esta el error, podrías escribir el error q te sale y un poco de mas codigo.

Otra cosa cuando escribas un post hay una opcion de añadir codigo, asi es mas facil, lo tienes que ajustar en modo c\c++\c# o java si codeas en java.

 

Gracias lo tendré en cuenta para el próximo post.

No da ningún error, el código funciona perfectamente pero me gustaría entender esa parte de código ya que nunca había aplicado condicionales a declarar una varaible

Share this post


Link to post
Share on other sites

a losiento crei que tenias un error, es muy sencillo:

(codicion?true:false;)

si la condicion es verdadera va a devolver el valor en la seccion true, sino el valor en la seccion false.

Entonces si la velocidad de rb es superior a la velocidad de la camara entonces moveSpeed va a ser igual a la velocidad de rb sino va a ser igual a la velocidad de la camara.

en este caso, la linea de codigo la podrias cambiar por

float moveSpeed = max(rb.velocity.magnitud, cameraSpeed);

 

 

Edited by KevinLastra
  • Like 1

Share this post


Link to post
Share on other sites

Puede representar también varios "if else" en una sola línea.

Por ejemplo:

int resultado = a > 1 ? 3 : a > 0 ? 2 : a > -2 ? 1 : 0;

Es equivalente a:

if( a > 1 )
	resultado = 3;
else if( a > 0 )
	resultado = 3;
else if( a > -2 )
	resultado = 1;
else
	resultado = 0;

 

Share this post


Link to post
Share on other sites

Se trata de un operador ternario, conocido cómo "?:", donde debes expresar (condición)? valorTrue : ValorFalse, como dice @lightbug estos pueden anidarse. 

A partir de la versión 8.0 de C# contamos con el método resumido "??" el cual omite el valor verdadero siendo este el valor de la operación. targetObject ?? defaultObject, en el ejemplo, si targetObject es nulo entonces retorna defaultObject.

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...