Noticias

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

AI Movimiento por saltos

Iniciado por ProTo, Abril 07, 2016, 10:19:08 PM

Tema anterior - Siguiente tema
Abril 07, 2016, 10:19:08 PM Ultima modificación: Abril 07, 2016, 10:24:35 PM por ProTo
Cómo haríais que el movimiento de un AI no sea constante, sino por "saltitos"? como por ejemplo en el típico froggy que avanza salto a salto..Muchas gracias! PD: Dejo aquí los scripts de movimiento que utilizo por si ayuda de algo..public class Movimiento : MonoBehaviour {    float lerpTime;
    float currentLerpTime;
    float percentage = 1;    Vector3 startPos;
    Vector3 endPos;    bool firstInput;
    public bool justJump;    void Update () {
        if(Input.GetButtonDown("up") || Input.GetButtonDown("down") || Input.GetButtonDown("left") || Input.GetButtonDown("right")) {
            if (percentage == 1)
            {
                lerpTime = 1;
                currentLerpTime = 0;
                firstInput = true;
                justJump = true;
            }
        }
        startPos = gameObject.transform.position;
        if (Input.GetButtonDown ("right") && gameObject.transform.position == endPos) {
            endPos = new Vector3(transform.position.x + 2, transform.position.y, transform.position.z);
        }
        if (Input.GetButtonDown ("left") && gameObject.transform.position == endPos) {
            endPos = new Vector3(transform.position.x - 2, transform.position.y, transform.position.z);
        }
        if (Input.GetButtonDown ("up") && gameObject.transform.position == endPos) {
            endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z + 2);
        }
        if (Input.GetButtonDown ("down") && gameObject.transform.position == endPos) {
            endPos = new Vector3(transform.position.x, transform.position.y, transform.position.z - 2);
        }
        if (firstInput == true) {
            currentLerpTime += Time.deltaTime * 5;
            percentage = currentLerpTime / lerpTime;
            gameObject.transform.position = Vector3.Lerp (startPos, endPos, percentage);
            if (percentage > 0.8){
                percentage = 1;
            }
            if (Mathf.Round(percentage) == 1) {
                justJump = false;
            }
        }
    }
}_____________________________________________________________________public class Rotacion : MonoBehaviour {    Animator anim;
    public GameObject player;
    
    void Start () {
        anim = gameObject.GetComponent<Animator> ();
    
    }    void Update () {
        Movimiento bounceScript = player.GetComponent<Movimiento> ();
        if(bounceScript.justJump == true) {
            anim.SetBool ("Jump",true);
        }else{
            anim.SetBool ("Jump",false);
        }
        if (Input.GetButtonDown ("right")) {
            gameObject.transform.rotation = Quaternion.Euler(0,0,0);
        }
        if (Input.GetButtonDown ("left")) {
            gameObject.transform.rotation = Quaternion.Euler(0,180,0);
        }
        if (Input.GetButtonDown ("up")) {
            gameObject.transform.rotation = Quaternion.Euler(0,-90, 0);
        }
        if (Input.GetButtonDown ("down")) {
            gameObject.transform.rotation = Quaternion.Euler(0,90, 0);
        }    }

Pues creando un movimiento parabólico como el del disparo de un cañón. Y algo que aplique más/menos fuerza, como el tiempo de pulsación del botón.

Yo me refería a un bot que me siguiera >.<

Pues no utilices la pulsación del botón.

A lo que me refería es a un path grid que no use diagonales para llegar al destino.. o sea que el Enemy llegue a su destino en 4 direcciones, horizontal y vertical.http://math.stackexchange.com/questions/1269623/number-of-paths-that-lie-under-the-diagonal" rel="external nofollow">http://math.stackexchange.com/questions/1269623/number-of-paths-that-lie-under-the-diagonal

El Tutorial oficial del Rogue-like 2D tiene en cuenta una IA enemiga que se mueve por turnos, igual es lo que te interesa:https://unity3d.com/es/learn/tutorials/projects/2d-roguelike/enemy?playlist=17150

si es buen tutorial ese pioj

Etiquetas: