Jump to content

Search the Community

Showing results for tags 'salto'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Proyectos
    • Offtopic
    • Unity Feeds
    • Website
    • Youtube
  • Mesa de ayuda
    • Unity
    • Arte
    • Builds & Dispositivos
    • Otras Especialidades
  • Aportes de la Comunidad
    • Recursos
    • Eventos
  • Bolsa de trabajo & Colaboraciones
    • Ofertas y Demandas
  • Post Antiguos
    • General (Antiguo)

Blogs

There are no results to display.

There are no results to display.


Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Especialidad

Found 6 results

  1. Hi. Tengo hecho el salto de mi player, pero éste aún tiene control de movimiento estando en el aire, y la verdad no busco eso. Lo que busco en su lugar es que si está caminando en una dirección, y entonces salta, que no pueda moverse en el aire hacia los lados, o por lo menos hacer que pueda moverse muy poco, para que el salto no sea TAN rígido. He probado con poner todo el código que hace que mi player camine dentro de un "if (isGrounded) ...", pero no me funcionó. Adiciono las partes del código que uso para hacer que mi player camine, y salte, aquí abajo. Estoy usando un CharacterController. Nótese que en este código todavía no intenté corregir dicho problema: void Caminar() { float _movVertical = Input.GetAxis("Vertical") * _velocidadActual; float _movHorizontal = Input.GetAxis("Horizontal") * _velocidadActual; _gravedad += Physics.gravity.y * Time.deltaTime; Vector3 _velocidad = new Vector3(_movHorizontal, _gravedad, _movVertical); _velocidad = transform.rotation * _velocidad; _cc.Move(_velocidad * Time.deltaTime); } void Saltar() { if (_cc.isGrounded) { _estaEnElSuelo = true; _puedeSaltar = true; _puedeCorrer = true; } else { _estaEnElSuelo = false; _puedeSaltar = false; _puedeCorrer = false; } if (_puedeSaltar) { if (Input.GetButtonDown("Jump")) { _gravedad = _fuerzaSalto; } else if (!Input.GetButtonDown("Jump")) { _gravedad = -10f; } } } Qué puedo hacer para corregir esto?
  2. Hola muy buenas!! Mi duda es la siguiente, quiero conseguir que mi jugador rebote contra paredes y suelo sin usar el physic de bounce. Consigo que detecte cuando es suelo y cuando es pared pero si pilla justo en la esquina rebota erróneamente... lo que utilizo básicamente es este trozo de código : al combinarlos da error y no se me ocurre otra forma... quiero llegar a conseguir un efecto como el del siguiente vídeo : no se si me explico bien pero si alguien sabe como poder hacerlo se lo agradeceria muchisimo!!
  3. Guest

    Calcular trayectoria

    Hola que tal estoy creando un juego 2d, mi problema es: los enemigos quisiera que contaran con un calculo de salto, quisiera saber como saber donde caera después de un salto ya que lo siguiente que quisiera hacer es que el script donde no encuentre piso no salte, de antemano muchas gracias.
  4. Hola gente. Estoy intentando realizar una animación con un Sprite 2D, os cuento: Cuando salto quiero que al coger altura tenga una animación, un sprite y cuando caiga tenga otra forma el sprite. He realizado las animaciones y las transiciones entre el reposo y el salto y he realizado también el Script pero no consigo realizar lo que yo quiero. El primer problema es que al pulsar el Space que es mi tecla de salto, no cambia la animación o si cambia lo realiza en medio del salto y luego la animación del salto no es como quiero porque no cambia cuando coge altura y cuando pierde altura. Os copio el Script a ver si me podéis echar un cable. using UnityEngine; using System.Collections; public class Movimiento : MonoBehaviour { public float velocidad = 3f; public float fuerzaSalto = 100f; private bool enSuelo = true; public Transform comprobadorSuelo; private float comprobadorRadio = 0.07f; public LayerMask mascaraSuelo; // Máscara para identificar elementos suelo. Es como un tag, así identificamos como suelo a todos los elementos que nosotros queramos. private bool dobleSalto = false; private Animator animator; void Awake () { // Función que se llama al inicio una vez. animator = GetComponent<Animator> (); } // Use this for initialization void Start () { } void FixedUpdate() { // Esta función es para que se llame a la función cada intervalo de tiempo, no cada Frame como hace Update ya que cada ordenador es más o menos rápido // y no coincidiría con todos los dispositivos. 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.GetKey (KeyCode.RightArrow)) { this.transform.Translate (Vector3.right * velocidad * Time.deltaTime); } if (Input.GetKey (KeyCode.LeftArrow)) { this.transform.Translate (Vector3.left * velocidad * Time.deltaTime); } if ((enSuelo || !dobleSalto) && Input.GetKeyDown (KeyCode.Space)) { //if (Input.GetKey (KeyCode.Space)) { --> No usar esto para que no se mantenga el salto. Sólo quiero que al pulsar salte, no se mantenga como al caminar. // Insertar código de salta. Comprobar cual es la mejor opción GetComponent<Rigidbody2D>().velocity = new Vector2(GetComponent<Rigidbody2D>().velocity.x, fuerzaSalto); // Para que el segundo salto cuando el personaje esté cayendo del primero se note que salta y no solo se mantenga. //GetComponent<Rigidbody2D>().AddForce(new Vector2(0, fuerzaSalto)); if (!dobleSalto && !enSuelo) { dobleSalto = true; } } } }El Script está en C# y funciona correctamente (no saltan errores). En animator he realizado dos parámetros, uno llamado VelX para el modo correr que aún no he realizado y otro llamado isGrounded para saber que el Sprite está tocando el suelo. Además he realizado un Layer "Suelo" para que el Sprite sepa cuales son los elementos "Suelo" y así pueda diferenciar cuando está tocándolo. Cuando pulso la tecla espaceadora el parámetro "isGronded" pasa correctamente a false pero no ejecuta la animación. Además luego no se como realizar que un Sprite se ejecute cuando coge altura y otro cuando la pierde. ¿Podéis ayudarme o guiarme? Gracias de antemano, un saludo a todos.
  5. Hola a todos, llevaba tiempo siguiendo este foro hasta que hoy me surgio un problema en un proyecto de Unity y decidi hacerme la cuenta de una vez aqui. El problema es que yo tengo un personaje con 2 animaciones correr y saltar. Tengo un objeto padre llamado A con y otro hijo llamado B el cual tiene el componente animator. El fallo es que cuando el personaje salta, este al caer aterriza un poco mas arriba que el suelo, y si sigo saltando pues acaba volando. Probe a meterle Rigidbody con Gravedad y el problema es que esto me estropea la animación de correr, ya que collisiona constantemente el modelo con el suelo y se ve como lageada la animación. No tengo ni idea de como poder solucionarlo y agredeceria que me hecharais un cable. Os dejo unas imágenes de lo que me pasa a modo de resumen más visual (la primera sin saltar ninguna vez y la segunda cuando ya salte 4 veces y se queda a esa distancia corriendo):
  6. El script en principio funciona bien, pero me surgen algunas dudas: 1- La primera es si una fuerza se debe multiplicar por Time.deltaTime. En este caso en Update hago un AddForce, y no se si esa fuerza se aplica igual e cualquier frame rate. Intuyo que si, pero prefiero asegurarme. 2- Al estar trabajando con físicas y rigidbodyes y tal, ¿debería haber usado mejor FixedUpdate?... en caso de que sí, ¿que parte del código debería haber pasado a esa función?, ya que dentro de mi "if" del update hay cosas como el cambio de la animación o la detección de si ha saltado que no tienen que ver con la fisica. 3- Fixed Update tiene un framerate fijo, no? aquí nunca habría que usar el Time.deltaTime? Muchas gracias! using UnityEngine; using System.Collections; public class chico : MonoBehaviour { public float fuerzaSalto = 500; Rigidbody2D miRigidbody; Animator animador; int puedeSaltar; //0 = esta en el suelo y puede saltar, 1= esta en el aire y puede saltar, 2 o mas esta en el aire y no puede saltar void Start () { miRigidbody = this.GetComponent<Rigidbody2D>(); animador = this.GetComponent<Animator>(); puedeSaltar = 0; } void Update () { if(Input.GetMouseButtonDown(0) && puedeSaltar <2) { miRigidbody.velocity = new Vector2(miRigidbody.velocity.x,0); miRigidbody.AddForce(new Vector2(0,fuerzaSalto)); puedeSaltar +=1; animador.SetBool("enElSuelo",false); } } void OnCollisionEnter2D(Collision2D col) { if(col.gameObject.tag == "suelo") { puedeSaltar = 0; animador.SetBool("enElSuelo",true); } } }
UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...