Jump to content
Null

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

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
hace 16 horas, iRobb said:

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.

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!

Share this post


Link to post
Share on other sites
hace 2 horas, juanma_teso said:

Si 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;
  }
}

 

Edited by Null

Share this post


Link to post
Share on other sites

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