Unity Spain

Mesa de ayuda => Unity3D => Scripting => Mensaje iniciado por: Rootet en Agosto 25, 2019, 07:16:12 PM

Título: Aumentar la velocidad de un personaje
Publicado por: Rootet en Agosto 25, 2019, 07:16:12 PM
Buenas a todos, estoy con un juego de plataforma en 2D, recién empezando. Necesito añadir algo en el script de "Controlador del personaje" para que al pulsar el botón derecho del ratón, aumente la velocidad del personaje *1.25. He añadido lo siguiente, pero no sé si está bien. Aunque no me da error de compilación, al probar en el juego no noto gran diferencia entre pulsar el botón izquierdo o derecho. Quizás es porque debo aumentar también la velocidad de la animación "Run"??¿cómo se hace? desde el componente Animator en el código?
 
Os dejo el Script aquí por si alguien puede echar un vistazo. Gracias
 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControladorPersonaje : MonoBehaviour
{
    Rigidbody2D rigi;
    public float fuerzaSalto=100f;
    private bool enSuelo=true;
    public Transform comprobadorSuelo;
    float comprobadorRadio=0.07f;
    public LayerMask mascaraSuelo;
    private bool dobleSalto=false;
    private Animator animator;
    private bool corriendo=false;
    public float velocidad=1f;
    private AudioSource sonido;
 
        // Start is called before the first frame update
    void Start()
    {
    }
    void Awake()
    {
        rigi=GetComponent<Rigidbody2D>();
        animator=GetComponent<Animator>();
        sonido = GetComponent<AudioSource>();
    }
    void FixedUpdate()
    {
        //Si está parado
        if (corriendo){
            //Aplicar velocidad en el eje X
            rigi.velocity= new Vector2(velocidad,rigi.velocity.y);
            animator.SetFloat("velX",rigi.velocity.x);
        }
        //Comprobamos si comprobadorSuelo+Radio tocan con los objetos 
        //que pertenezcan a mascaraSuelo
        enSuelo=Physics2D.OverlapCircle(comprobadorSuelo.position,comprobadorRadio,mascaraSuelo);
        
        animator.SetBool("isGrounded",enSuelo);
        if (enSuelo){
            dobleSalto=false;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)){
            if(corriendo){
                if ((enSuelo || !dobleSalto)){
                    sonido.Play();
                    //Empujón hacia arriba
                    //Opción 1. Metodo up de Vector2
                    rigi.AddForce(Vector2.up*fuerzaSalto);
                    //Otra opción
                    //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y
                    //rigi.AddForce(new Vector2(0,fuerzaSalto));
                    if(!dobleSalto && !enSuelo){
                        dobleSalto=true;
                    }
                }
            }
            else{
                corriendo=true;
                NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer");
            }
        }
        if (Input.GetMouseButtonDown(1)){
            
            if (corriendo){
             
            }
            else{
                rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y);
            }
            
        }
        
    }

 
 
 
ControladorPersonaje.cs
Título: Aumentar la velocidad de un personaje
Publicado por: iRobb en Agosto 25, 2019, 07:56:15 PM
Te recomiendo empezar desde cero y aprender. Es duro, complicado, se te acaba el tiempo... es la mejor manera. En serio.
Título: Aumentar la velocidad de un personaje
Publicado por: Rootet en Agosto 25, 2019, 08:38:12 PM
Para tí iRobb
 
Me pregunto una cosa, si esto es una comunidad, para ayudarnos mutuamente, ¿Es tan difícil ayudar?Si yo tuviera los conocimientos necesarios a mi no me importa ayudar¿Ya no te acuerdas de cuando tú estabas empezando?¿Qué te hace pensar que no estoy aprendiendo desde cero, qué no le dedico horas en el día...? ¿Tan complicado es leer el post y limitarse a dar ayuda, del tipo "pues me parece que está mal aquí o allí, podrías hacer esto...en fin ayudar. Te doy yo a tí un consejo, y como no puedo hacerlo por privado pues aquí. Un poquito de HUMILDAD y EMPATÍA no cuesta nada.
Título: Aumentar la velocidad de un personaje
Publicado por: pioj en Agosto 25, 2019, 09:22:23 PM
Cita de: Rootet date=1566758292¿Es tan difícil ayudar?
   


Te respondo rápidamente. Una gran cantidad de usuarios no tienen nivel suficiente para saber ayudar a nadie, están empezando. Otros tantos sólo se limitan a preguntar y resolver sus pocas dudas y luego se largan al olvido. Realmente hay poca gente (y muy grande!) que participa y ayuda en cualquier Comunidad.
 
 
 
Cita de: Rootet date=1566758292¿Tan complicado es leer el post y limitarse a dar ayuda,
   


Te sorprendería saber lo poco o nada que se lee la gente las normas. Por ejemplo, yo mismo te he tenido que formatear el código que has pegado en tu post, para respetar las normas de esta Comunidad...
 
 
 
@iRobb te ha dado un muy buen consejo general. Ya nos hemos encontrado con muchos usuarios que aunque vienen con muchísima ilusión y voluntad, lo hacen sin ningún orden ni planificación previa. Otra cosa es que te sirva para solucionar tu duda en concreto. Pero de nuevo, él no está obligado a leer ni responder nada a nadie, lo hace porque quiere...
 
 
 
Por otra parte, viendo tu código, supongo que sabes que el comando de GetMouseButtonDown no evalúa "cuando mantienes pulsado", sinó cuando haces una simple pulsación y sueltas... Por tanto, la velocidad tras haber pulsado el botón derecho no se mantiene siempre, se va perdiendo a medida que frenes o que caiga el gameobject tras la fuerza, etc, etc..
Título: Aumentar la velocidad de un personaje
Publicado por: iRobb en Agosto 25, 2019, 10:21:56 PM
Cita de: Rootet date=1566758292Para tí iRobb
   
   
      Me pregunto una cosa, si esto es una comunidad, para ayudarnos mutuamente, ¿Es tan difícil ayudar?Si yo tuviera los conocimientos necesarios a mi no me importa ayudar¿Ya no te acuerdas de cuando tú estabas empezando?¿Qué te hace pensar que no estoy aprendiendo desde cero, qué no le dedico horas en el día...? ¿Tan complicado es leer el post y limitarse a dar ayuda, del tipo "pues me parece que está mal aquí o allí, podrías hacer esto...en fin ayudar. Te doy yo a tí un consejo, y como no puedo hacerlo por privado pues aquí. Un poquito de HUMILDAD y EMPATÍA no cuesta nada.
   


He sido un poco radical. Mañana te busco un tutorial para un platformer 2D.
Título: Aumentar la velocidad de un personaje
Publicado por: Rootet en Agosto 25, 2019, 10:46:13 PM
Cita de: pioj date=1566760943 
   
   
      @iRobb te ha dado un muy buen consejo general. Ya nos hemos encontrado con muchos usuarios que aunque vienen con muchísima ilusión y voluntad, lo hacen sin ningún orden ni planificación previa. Otra cosa es que te sirva para solucionar tu duda en concreto. Pero de nuevo, él no está obligado a leer ni responder nada a nadie, lo hace porque quiere...
   
   
       
   
   
      Por otra parte, viendo tu código, supongo que sabes que el comando de GetMouseButtonDown no evalúa "cuando mantienes pulsado", sinó cuando haces una simple pulsación y sueltas... Por tanto, la velocidad tras haber pulsado el botón derecho no se mantiene siempre, se va perdiendo a medida que frenes o que caiga el gameobject tras la fuerza, etc, etc..
   


Es cierto,
 
Primero, hay muy poca gente que de verdad pueda y quiera ayudar en este tipo de foros y no dudo para nada de que sean grandes. Pero hay muchas otras que se dedican  a dar consejos generales , y cuestionar las dudas de los demás, con falta de humildad y empatía y sin aportar valor ninguno en su comentarios.
 
Segundo, las normas me las he leído pero es mi primer post, muy bien no me podía salir... Aunque también usuarios antiguos no recuerdan alguna norma que otra, por ejemplo 
 
" Para responder con una frase muy corta, una obviedad o un comentario que no aporte nada al hilo, mejor no lo hagas. Para eso están los chats..."
 
(Si no me equivoco es lo que ha hecho el usuario que me ha contestado (las dos veces). Que evidentemente no está obligado para nada a contestarme
 
Y para terminar, 
 
Si, el comando "GetMouseButtonDown" es el que tengo que usar si o sí. Creo que ya he conseguido aumentar la velocidad del personaje, ahora me falta el componente Animator.
 
Gracias por contestarme, cualquier respuesta de ese tipo que aporte "algo de luz" a los que empezamos es lo que se valora y se necesita, para buscar tutoriales y dar consejos generales de vida está youtube. 
 
Espero algún día poder  ayudar de manera eficaz.
 
Saludos
Título: Aumentar la velocidad de un personaje
Publicado por: iRobb en Agosto 26, 2019, 07:40:40 AM
Cita de: Rootet date=1566765973Es cierto,
   
   
      Primero, hay muy poca gente que de verdad pueda y quiera ayudar en este tipo de foros y no dudo para nada de que sean grandes. Pero hay muchas otras que se dedican  a dar consejos generales , y cuestionar las dudas de los demás, con falta de humildad y empatía y sin aportar valor ninguno en su comentarios.
   
   
      Segundo, las normas me las he leído pero es mi primer post, muy bien no me podía salir... Aunque también usuarios antiguos no recuerdan alguna norma que otra, por ejemplo 
   
   
      " Para responder con una frase muy corta, una obviedad o un comentario que no aporte nada al hilo, mejor no lo hagas. Para eso están los chats..."
   
   
      (Si no me equivoco es lo que ha hecho el usuario que me ha contestado (las dos veces). Que evidentemente no está obligado para nada a contestarme
   
   
      Y para terminar, 
   
   
      Si, el comando "GetMouseButtonDown" es el que tengo que usar si o sí. Creo que ya he conseguido aumentar la velocidad del personaje, ahora me falta el componente Animator.
   
   
      Gracias por contestarme, cualquier respuesta de ese tipo que aporte "algo de luz" a los que empezamos es lo que se valora y se necesita, para buscar tutoriales y dar consejos generales de vida está youtube. 
   
   
      Espero algún día poder  ayudar de manera eficaz.
   
   
      Saludos
   


Aquí tienes un tutorial que me gusta. Síguelo y tendrás una base para continuar y entenderlo todo mejor:
 


   
eature=oembed">

 
 
Título: Aumentar la velocidad de un personaje
Publicado por: Antonio en Agosto 26, 2019, 10:24:32 PM
Cita de: Rootet date=1566753372Buenas a todos, estoy con un juego de plataforma en 2D, recién empezando. Necesito añadir algo en el script de "Controlador del personaje" para que al pulsar el botón derecho del ratón, aumente la velocidad del personaje *1.25. He añadido lo siguiente, pero no sé si está bien. Aunque no me da error de compilación, al probar en el juego no noto gran diferencia entre pulsar el botón izquierdo o derecho. Quizás es porque debo aumentar también la velocidad de la animación "Run"??¿cómo se hace? desde el componente Animator en el código?
   
   
      Os dejo el Script aquí por si alguien puede echar un vistazo. Gracias
   
   
      
   

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ControladorPersonaje : MonoBehaviour
{
    Rigidbody2D rigi;
    public float fuerzaSalto=100f;
    private bool enSuelo=true;
    public Transform comprobadorSuelo;
    float comprobadorRadio=0.07f;
    public LayerMask mascaraSuelo;
    private bool dobleSalto=false;
    private Animator animator;
    private bool corriendo=false;
    public float velocidad=1f;
    private AudioSource sonido;
 
        // Start is called before the first frame update
    void Start()
    {
    }
    void Awake()
    {
        rigi=GetComponent<Rigidbody2D>();
        animator=GetComponent<Animator>();
        sonido = GetComponent<AudioSource>();
    }
    void FixedUpdate()
    {
        //Si está parado
        if (corriendo){
            //Aplicar velocidad en el eje X
            rigi.velocity= new Vector2(velocidad,rigi.velocity.y);
            animator.SetFloat("velX",rigi.velocity.x);
        }
        //Comprobamos si comprobadorSuelo+Radio tocan con los objetos 
        //que pertenezcan a mascaraSuelo
        enSuelo=Physics2D.OverlapCircle(comprobadorSuelo.position,comprobadorRadio,mascaraSuelo);
        
        animator.SetBool("isGrounded",enSuelo);
        if (enSuelo){
            dobleSalto=false;
        }
    }
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButtonDown(0)){
            if(corriendo){
                if ((enSuelo || !dobleSalto)){
                    sonido.Play();
                    //Empujón hacia arriba
                    //Opción 1. Metodo up de Vector2
                    rigi.AddForce(Vector2.up*fuerzaSalto);
                    //Otra opción
                    //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y
                    //rigi.AddForce(new Vector2(0,fuerzaSalto));
                    if(!dobleSalto && !enSuelo){
                        dobleSalto=true;
                    }
                }
            }
            else{
                corriendo=true;
                NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer");
            }
        }
        if (Input.GetMouseButtonDown(1)){
            
            if (corriendo){
             
            }
            else{
                rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y);
            }
            
        }
        
    }

   
       
   
   
      ControladorPersonaje.cs 2.51 kB · 0 downloads  
   


Hola Rootet.


Mirando el código, veo que hay un problema con tu actualización de la velocidad.


En el Update, estás mirando si pulsas el botón del ratón, entonces actualizas la velocidad a "velocidad * 1.25f", pero también, una instrucción similar está siendo llamada en el siguiente frame y poseriores, en FixedUpdate, y esa está utilizando sólo "velocidad".


No he probado tu código, pero creo, que esto puede llevarte al problema de que el cambio de velocidad no se llega a ejecutar realmente, que lo que ves al moverse, puede que sea el resultado del FixedUpdate. Tal y como lo veo yo (un poco por encimilla @_@) 
 

De modo que si el cambio de velocidad venía por esa línea, creo que no funcionará.
 
 
 
Una manera rápida de arreglarlo es en vez de usar GetMouseButtonDown, utilizar simplemente GetMouseButton, su función es la misma, sólo que esta siempre se activa mientras el botón esté siendo pulsado, mientras que GetMouseButtonDown y GetMouseButtonUp, sólo se activan en los momentos de transición. (Son bastante útiles, pero quizás no en esta situación).
 
 
 
Otra posibilidad, es cambiar el valor de la variable velocidad cuando haces la activación de la variable corriendo.
 
 
 
Tutorial arriba, tutorial abajo, me parece que es buena idea intentar hacerlo por ti mismo, es una buena práctica para aprender a resolver y racionalizar los problemas. Ya habrá tiempo de pulirlo.
Título: Aumentar la velocidad de un personaje
Publicado por: lightbug en Agosto 28, 2019, 04:38:44 AM
@Rootet en tu script hay cositas que están bien otras que están mal, por ej:
 
1) Update para inputs, FixedUpdate para físicas:
 

if (Input.GetMouseButtonDown(1)){
           
            if (corriendo){
             
            }
            else{
                rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y);
            }
           
        }

 
En update, estás modificando una velocidad, cosa que debés hacer en FixedUpdate, esto se lee como "Si apreto el botón derecho y corriendo es false la velocidad X es el 25% más grande" y esta actualización sucede en un solo cuadro, no cuadro a cuadro. Además si la velocidad es un 25% más grande se supone que corriendo ahora debe ser true pero no, se setea true si apretás el otro botón (en FixedUpdate).
 
─────────────────────────────────────────────────────────────────────────────────────────────────────
 
2) Quién es responsable de corriendo?
 

if (Input.GetMouseButtonDown(0)){
            if(corriendo){
                if ((enSuelo || !dobleSalto)){
                    sonido.Play();
                    //Empujón hacia arriba
                    //Opción 1. Metodo up de Vector2
                    rigi.AddForce(Vector2.up*fuerzaSalto);
                    //Otra opción
                    //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y
                    //rigi.AddForce(new Vector2(0,fuerzaSalto));
                    if(!dobleSalto && !enSuelo){
                        dobleSalto=true;
                    }
                }
            }
            else{
                corriendo=true;
                NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer");
            }
        }

 
Cuando apretás el botón izq y no está corriendo se da la primer vuelta (el else), es decir que se pone corriendo = true. En el siguiente cuadro GetMouseButtonDown no se dispara (por razones obvias) entoces el "if(corriendo)" no se da. Sí se va a dar el "if(corriendo)" en el proximo click. Además, ¿quién pone corriendo en false?
 
Y volviendo al punto 1, solo si corriendo es falso la velocidad aumenta. Una vez que diste click izquierdo corriendo nunca vuelve a false (?). Puede ser que me haya olvidado de algo, muchas veces contesto a la ligera.
 
─────────────────────────────────────────────────────────────────────────────────────────────────────
 
█████████████████████████████████████████████████████████████████████████████████████████████████████
 
Podés resolver el problema parcheando if's y demás, pero te diría que de entrada la estructura es muy confusa para una tarea tan simple, tomalo como una oportundad de mejora y experimentá con una nueva, que tenga más lógica y sobretodo que alguien externo al código lo vea y lo entienda al instante, pensá que esto es un salto y una funcionalidad de correr, practicamente no es nada.
 
La lógica que te recomiendo para una mezcla Update + FixedUpdate en un platformer (y con cualquier personaje) es la siguiente (seguramente hay cosas que no definí, solo una idea muy por arriba):
 

// inputs - esto expandilo a todas las inputs que estás esperando, lo mismo con ejes
// En este ejemplo está solo correr "Run" (que elegí la leftShift)
bool runPressed = false;
bool runReleased = false;
bool running = false;
bool isGrounded = false;
 
void Update()
{
// Update puede pasar 100 veces más rápido que FixedUpdate (50 fps por default), así que
// todos los KeyDown se acumulan, no se setean, así no perdés ninguno en el camino
// por acumular me refiero a usar una simple OR
runPressed |= Input.GetKeyDown( KeyCode.LeftShift );
runReleased |= Input.GetKeyUp ( KeyCode.LeftShift );
 
 
 

}
void FixedUpdate()
{
//Detectar suelo, determinar direcciones de movimiento, ángulos, etc
// Por supuesto acá es donde decís "suelo = true o false"
isGrounded = IsGrounded();
 
     // el vector objetivo cuadro a cuadro, no necesariamente el aplicado
     Vector2 targetVelocity = Vector2.Zero;
 
// bien general un "if( suelo ) ....
if( isGrounded )
    {
   //Todo lo que pasa si y solo si el jugador está grounded
   // en este caso la input a evaluar es run así que
   if( runPressed )
        {
           running = true;
             targetVelocity.x = ...
        }
         else if( runReleased )
        {
           running = false;
             targetVelocity.x = ...
        }
       
         
    }
    else   //Todo lo que pasa si y solo si el jugador NO está grounded
    {
         //en el aire no puede correr
         running = false;
         
         targetVelocity.y = ...
   
    }
     //Una vez determinado el estado se aplica el vector obtenido a la velocidad (de la forma que quieras).
     rb.velocity = ...(dependiendo de targetVelocity)

// IMPORTANTE --> Resetear inputs, FixedUpdate ya las usó
runPressed = false;
runReleased = false;

}

 
 
 
 
 
Cita de: Rootet date=1566753372Quizás es porque debo aumentar también la velocidad de la animación "Run"?
   


Animación y movimiento poco tienen que ver, si no ves los efectos en pantalla tratá de exagerar los valores, en vez de 1.25f poné 5f. Igualmente creo que sí, desde el animator podés setear la velocidad del clip (revisá las referencias de Animator o google más rápido), aunque no recuerdo, estoy completamente seguro que para el sistema Legacy (viejo) se puede hacer, pero con el componente Animation.
 
 
 
Saludos
Título: Aumentar la velocidad de un personaje
Publicado por: Deaymon en Agosto 28, 2019, 11:35:27 AM
La solución de @lightbug es la que uso yo tal cual. A veces incluso uso un script aparte que se dedique exclusivamente a leer inputs (InputManager o algo así) y, luego, cualquier otro script que necesite saber acerca de esos inputs, use una referencia a este (InputManager).

Eso sí, lo de usar OR al asignar los inputs para acumularlos entre cada FixedUpdate; excelente añadido que me voy a copiar a partir de ahora.  Gracias por el aporte.
Título: Aumentar la velocidad de un personaje
Publicado por: lightbug en Agosto 28, 2019, 06:07:51 PM
Cita de: Deaymon date=1566984927La solución de @lightbug es la que uso yo tal cual. A veces incluso uso un script aparte que se dedique exclusivamente a leer inputs (InputManager o algo así) y, luego, cualquier otro script que necesite saber acerca de esos inputs, use una referencia a este (InputManager).

      Eso sí, lo de usar OR al asignar los inputs para acumularlos entre cada FixedUpdate; excelente añadido que me voy a copiar a partir de ahora.  Gracias por el aporte.
   


Exacto, en realidad un script separado para inputs es lo ideal (separado del movimiento). Lo de las OR se lo rob... digo tome prestado a los de Unity , de la serie del training day de 2D (excelente por cierto, va desde personaje hasta audio):
 
Create A 2D Platformer (//%5Byoutube%5Dhttps://www.youtube.com/watch?v=j29NgzV8Dw4&amp;list=PLX2vGYjWbI0REfhDHPpdIBjjrzDHDP-xT%5B/youtube%5D)
Título: Aumentar la velocidad de un personaje
Publicado por: Rootet en Agosto 29, 2019, 08:57:13 AM
Cita de: lightbug date=1566959924Cuando apretás el botón izq y no está corriendo se da la primer vuelta (el else), es decir que se pone corriendo = true. En el siguiente cuadro GetMouseButtonDown no se dispara (por razones obvias) entoces el "if(corriendo)" no se da. Sí se va a dar el "if(corriendo)" en el proximo click. Además, ¿quién pone corriendo en false?
   
   
      Y volviendo al punto 1, solo si corriendo es falso la velocidad aumenta. Una vez que diste click izquierdo corriendo nunca vuelve a false (?). Puede ser que me haya olvidado de algo, muchas veces contesto a la ligera.
   


@lightbug, sí efectivamente. Solo si está corriendo puede aumentar la velocidad y nunca vuelve a false, hasta que se cae o toca una bomba (fin de juego). Muchas gracias por la ayuda, lo del script para leer inputs es una gran idea.
 
Cita de: Antonio date=1566851072Una manera rápida de arreglarlo es en vez de usar GetMouseButtonDown, utilizar simplemente GetMouseButton, su función es la misma, sólo que esta siempre se activa mientras el botón esté siendo pulsado, mientras que GetMouseButtonDown y GetMouseButtonUp, sólo se activan en los momentos de transición. (Son bastante útiles, pero quizás no en esta situación).
   
   
       
   
   
      Otra posibilidad, es cambiar el valor de la variable velocidad cuando haces la activación de la variable corriendo.
   
   
       
   
   
      Tutorial arriba, tutorial abajo, me parece que es buena idea intentar hacerlo por ti mismo, es una buena práctica para aprender a resolver y racionalizar los problemas. Ya habrá tiempo de pulirlo.
   


Gracias Antonio, en ello estoy. El ejercicio me pide que use el GetMouseButtonDown. Ya casi lo tengo. Muchas gracias por el aporte
 
Cita de: Deaymon date=1566984927La solución de @lightbug es la que uso yo tal cual. A veces incluso uso un script aparte que se dedique exclusivamente a leer inputs (InputManager o algo así) y, luego, cualquier otro script que necesite saber acerca de esos inputs, use una referencia a este (InputManager).

      Eso sí, lo de usar OR al asignar los inputs para acumularlos entre cada FixedUpdate; excelente añadido que me voy a copiar a partir de ahora.  Gracias por el aporte.
   


Si, es muy buena solución, aunque pienso que nos piden algo mucho más sencilo. Gracias por contestar 
 
Buenas a todos, al final lo solucioné de la siguiente forma:
 
En la parte del Update solo añadí lo siguiente:
 

void Update()
    {
        if (Input.GetMouseButtonDown(0)){
            if(corriendo){
                if ((enSuelo || !dobleSalto)){
                    sonido.Play();
                    //Empujón hacia arriba
                    //Opción 1. Metodo up de Vector2
                    rigi.AddForce(Vector2.up*fuerzaSalto);
                    //Otra opción
                    //Aplicamos una fuerza de 0 en X y de fuerzasalto en Y
                    //rigi.AddForce(new Vector2(0,fuerzaSalto));
                    if(!dobleSalto && !enSuelo){
                        dobleSalto=true;
                    }
                }
            }
            else{
                corriendo = true;
                NotificationCenter.DefaultCenter().PostNotification(this, "PersonajeEmpiezaACorrer");
            }
        }
        if (Input.GetMouseButtonDown(1)){
            velocidad *= 1.25f;
            animator.speed *= 1.25F;
            if (corriendo){
             
            }
            else{
                rigi.velocity = new Vector2(velocidad * 1.25f, rigi.velocity.y);
               
            }
           
        }
       
    }

 
Al componente Animator, también le añado el mismo aumento de velocidad y ya funciona y se nota más al pulsar el botón derecho. Era sencillo, una vez que ves la lógica bien. Aunque m e quedo con lo del script para los imputs ;) Muchas gracias a los que habéis dedicado unos minutos en ayudarme.