NicoRueda 2 Report post Posted September 3, 2020 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
KevinLastra 9 Report post Posted September 3, 2020 @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
NicoRueda 2 Report post Posted September 3, 2020 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
KevinLastra 9 Report post Posted September 3, 2020 (edited) 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 September 3, 2020 by KevinLastra 1 Share this post Link to post Share on other sites
lightbug 836 Report post Posted September 3, 2020 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
francoe1 536 Report post Posted September 3, 2020 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