Jump to content
Sign in to follow this  
jose sanchez

Empezando con Unity

Recommended Posts

Hola buenas gente,

Acabo de descubrir esta pagina buscando por la web de unity.

He empezado hace una semanilla a hacer un curso de unity en youtube por lo que son muchas las cosas que tengo aun que aprender y espero que este foro nos podamos ayudar.

La cuestion es que en el mismo curso que estoy haciendo me ha surgido un problema con los scrips, pues no se mucho de programacion y mucho menos con respecto a unity y no  consigo identificar mi fallo. La cosa es que segun el tutorial, he creado un script que permitira que mi personaje pueda dar varios saltos antes de tocar al suelo y que cuando lo toque se reinicie el contador, pero mi problema es que solo da un salto. Os dejo el codigo por si alguien pudiera ayudar. Gracias por la ayuda.

Dejo aclarado que mi personaje esta en la capa Player y el suelo en su capa Suelo, asi que deberia estar todo bien. Tambien dejo el script y el link del tutorial en cuestion por si teneis dudas,


 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Saltar : MonoBehaviour {
    
    public Transform Pie;
    public LayerMask Suelo;
    public bool estaenelsuelo = false;
    public float radiopie=0.1f;


    public float fuerzasaltar = 30f;
    int cuentasalto=3;
    // Use this for initialization
    void Start () {
        
    }

    void FixedUpdate ()
    {
        estaenelsuelo = Physics2D.OverlapCircle (Pie.position, radiopie, Suelo);
        if (Input.GetKey ("space") && estaenelsuelo==true ) {
            //instrucciones

            gameObject.GetComponent <Rigidbody2D> ().AddForce (new Vector2 (, fuerzasaltar*cuentasalto));
        }

        if (Input.GetKey ("space") && estaenelsuelo == false && cuentasalto >  && gameObject.GetComponent<Rigidbody2D>().velocity.y > ) {
            
            gameObject.GetComponent<Rigidbody2D>().AddForce (new Vector2 (, fuerzasaltar*cuentasalto));
            cuentasalto = cuentasalto - 1;
        }

        if (!Input.GetKey ("space") && estaenelsuelo) {
            cuentasalto = 3;
        }
    
    }
}

Saltar.cs

Edited by pioj
usa el <> para pegar código, pls

Share this post


Link to post
Share on other sites

Hola Jose, bienvenido. creo que deberías haber hecho dos hilos, uno de presentación y este otro en Scripting.

hace 5 horas, jose sanchez said:

no se mucho de programacion y mucho menos con respecto a unity y no  consigo identificar mi fallo.

Pues no está mal, estas empezando con físicas, capas en Input, y tu fallo se debe a que no estas gestionando bien el Input y no cuentas con el tiempo de proceso del bucle de juego, pero bueno, tu sabrás el nivel que tienes y si es lo mas adecuado para empezar.

En un vistazo rápido creo que el problema está en el GetKey, no es que solo de un salto, es que da los tres antes de que te enteres, te explico.

- Primero se controla si esta en el suelo.

- si está en el suelo y la tecla espacio esta pulsada, se aplica la fuerza.

- lo siguiente no se ejecuta porque no se cumplen las condiciones.

- En el siguiente fotograma se vuelve a realizar la comprobación, como ya se ha aplicado la fuerza no estará en el suelo.

- Como no está en el suelo y la tecla espacio sigue pulsada (va tan rápido que seguro que no te ha dado tiempo a soltarla) da el siguiente salto y lo resta (como ves, no es que no de el salto, es que no te das ni cuenta)

- Así sigue hasta que se le acaben los saltos o sueltes el espacio (se acabaran antes los tres saltos)

- En el momento que sueltes el espacio o se le acaben los saltos, las físicas seguirán su proceso y el personaje caerá, por lo que en algún momento se dará la condición de que no este el espacio pulsado y este en el suelo, en ese momento el contador de saltos se restaura.

 

Usa una variable de control para saber si ha hecho un salto y no permitas otro hasta que no haya hecho un GetKeyUp (soltado la tecla), en ese momento puedes hacer el segundo salto, controla si ha soltado la tecla con la variable y entonces le dejas hacer el salto y le decrementas el contador,

 

Edited by FNP

Share this post


Link to post
Share on other sites

Bienvenido a la Comunidad. Por favor, lee las normas que te dejé en el mensaje de bienvenida.

 

Share this post


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

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