Jump to content
UnitySpain

Aceptamos donaciones vía Paypal.

UnitySpain.com es un servicio gratuito, pero mantener la Comunidad conlleva una serie de gastos.

Fondo Anual Unityspain: Donados 58,34€ de 150,00€

  • Servidor: Dominio.com y Hosting Web
  • Mantenimiento de los Foros
  • Contenido y Servicios Extras
  • Mantenimiento para Redes Sociales
Sign in to follow this  
Rootet

Aumentar la velocidad de un personaje

Recommended Posts

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

Edited by pioj
Por favor, usa el <> o el "quote" para pegar código.

Share this post


Link to post
Share on other sites

Te recomiendo empezar desde cero y aprender. Es duro, complicado, se te acaba el tiempo... es la mejor manera. En serio.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
45 minutes ago, Rootet said:

¿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.

 

45 minutes ago, Rootet said:

¿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..

Share this post


Link to post
Share on other sites
1 hour ago, Rootet said:

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.

He sido un poco radical. Mañana te busco un tutorial para un platformer 2D.

Share this post


Link to post
Share on other sites
1 hour ago, pioj said:

 

@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

Share this post


Link to post
Share on other sites
8 hours ago, Rootet said:

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

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

 

Share this post


Link to post
Share on other sites
On 8/25/2019 at 6:16 PM, Rootet said:

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 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 @_@) 

  • El personaje empieza quieto, el rigidbody no se mueve (ni en FixedUpdate ni en la llamada del ratón).
  • Se pulsa el botón del ratón, el personaje sigue sin moverse en ese frame, como la variable corriendo era falsa, el personaje no se mueve todavía, pero la variable "corriendo" se activa.
  • En el siguiente frame, la variable corriendo ya está activada, así que el velocity del FixedUpdate ya está en movimiento, pero el velocity del ratón ya no se activa, porque la función "GetMouseButtonDown" sólo da verdad en el frame (o ciclo) en que el botón pasa de no estar pulsado a estar pulsado, (que era el ciclo anterior por el que se activó la variable corriendo, pero ahora en este nuevo ciclo, el botón ya está pulsado y sigue pulsado, luego GetMouseButtonDown vuelve a ser falso).

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.

Edited by Antonio

Share this post


Link to post
Share on other sites

@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;
	

}

 

 

On 8/25/2019 at 2:16 PM, Rootet said:

Quizá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

Edited by lightbug

Share this post


Link to post
Share on other sites

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. :15_yum: Gracias por el aporte.

Share this post


Link to post
Share on other sites
6 hours ago, Deaymon said:

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. :15_yum: 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 :28_hugging:, de la serie del training day de 2D (excelente por cierto, va desde personaje hasta audio):

Create A 2D Platformer

Share this post


Link to post
Share on other sites
On 8/28/2019 at 4:38 AM, lightbug said:

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.

@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.

On 8/26/2019 at 10:24 PM, Antonio said:

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.

Gracias Antonio, en ello estoy. El ejercicio me pide que use el GetMouseButtonDown. Ya casi lo tengo. Muchas gracias por el aporte

21 hours ago, Deaymon said:

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. :15_yum: 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.

Share this post


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

×
×
  • Create New...