Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

[DUDA] Comprobar si está cayendo (3D, C#)

Iniciado por Null, Octubre 07, 2016, 11:25:04 PM

Tema anterior - Siguiente tema
Aloha.
 
Usando un CharacterController cómo puedo comprobar sí

el player está cayendo?


Si la Y es negativa, por ejemplo?

Aunque ahora mientras escribo esto pienso que quizás eso podría dar bastantes problemas.
 
Conocéis alguna otra forma de hacerlo?

Se agradecen las respuestas!

El FPSController (no el Character) tiene una variable "isGrounded" que es cuando choca con el terreno. Digamos que si el "isGrounded" es false está en el aire.

Cita de: iRobb date=1475890788El FPSController (no el Character) tiene una variable "isGrounded" que es cuando choca con el terreno. Digamos que si el "isGrounded" es false está en el aire.
   


El problema es que solo quiero detectar cuando está en el aire, pero ya cayendo.

No se me ocurre aún cómo.
 
Gracias por responder!

Si isGrounded es false y la Y es negativa?

Octubre 08, 2016, 10:51:38 PM #4 Ultima modificación: Octubre 08, 2016, 11:21:50 PM por Null
Cita de: juanma_teso date=1475951022Si isGrounded es false y la Y es negativa?
   


Lo que creo que ocurre con lo de la Y negativa es que,

por ejemplo imagínate que está en una montaña/colina y entonces salta (teniendo en cuenta que la posición del mapa está a 0, 0, 0)...

No me funcionaría en esos casos, porque la Y es positiva siempre, a menos que baje a los fondos marinos, por nombrar algún sitio "hondo" en el que

la posición Y empiece a ser negativa, ahí abajo entonces sí me funcionaría esa condición.
 
Pero quizás esté confundiéndome.

:(


 
 
EDITO:

Tengo la solución!
 
Lo colocaré por aquí por si alguien quiere ver cómo:
 

using UnityEngine;
using System.Collections;
[RequireCompoenent(typeof(CharacterController))]
public class ComprobarCaida : MonoBehaviour
{
  private CharacterController _cc;
  [SerializeField]
  private bool _estaCayendo = false;
 
  void Awake()
  {
    _cc = GetCompoenent<CharacterController>();
  }
  void Update()
  {
    ComprobarLaCaida();
  }
 
  public void ComprobarLaCaida()
  {
    if (_cc.velocity.y < 0f && !_cc.isGrounded)
       _estaCayendo = true;
    else
       _estaCayendo = false;
  }
}

 
 

Etiquetas: