Noticias

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

rigidbody vs rigidbody

Iniciado por brok, Diciembre 18, 2015, 01:02:16 AM

Tema anterior - Siguiente tema
Hola, mi problema es que el player empuja al enemigo y lo arrastra y yo quiero que se pare solo se mueva cuando lo golpee no cuando colisione con el, no se si me explicado bien.
using UnityEngine;
using System.Collections;

public class PlayerAI : MonoBehaviour
{

   
    private Animator ani;
    float distancia = 1.5f;
    float distanciaS = 1.0f;
    public SphereCollider colisionplayerPunoDe;
    public SphereCollider colisionplayerPataDe;
    public SphereCollider colisionplayerPunoIz;
    public SphereCollider colisionplayerPataIz;
    Transform target;
    Rigidbody rigidBody;
    vidaPlayer vidaplayer;
    private vidaAI VidaAI;
    private object enemigo;

    void Awake()
    {
        colisionplayerPunoDe.isTrigger = false;
        colisionplayerPunoIz.isTrigger = false;
        colisionplayerPataDe.isTrigger = false;
        colisionplayerPataIz.isTrigger = false;
    }
    void Start()
    {
        rigidBody = GetComponent<Rigidbody>();
        target = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
        vidaplayer = GameObject.FindGameObjectWithTag("Player").GetComponent<vidaPlayer>();
        VidaAI = GetComponent<vidaAI>();
        ani = GetComponent<Animator>();
       
       
    }


    void FixedUpdate()
    {
       
        StartCoroutine(Corrutinas());
    }
   
    IEnumerator Corrutinas()
    {


        if (vidaplayer.vida <= 0)
        {

            StopAllCoroutines();
            ani.SetFloat("andar", 0f);
            ani.SetBool("golpe", false);
            ani.SetInteger("estado", 0);
            yield return new WaitForSeconds(8.0f);
        }
        if (VidaAI.vida_Ai <= 0)

        {
            StopAllCoroutines();
           
            ani.SetFloat("andar", 0f);
            ani.SetBool("golpe", false);
            ani.SetInteger("estado", 0);
            ani.SetTrigger("muerteEnemigo");
            yield return new WaitForSeconds(8.0f);
        }
        else
        {
            StartCoroutine(Golpes());
            StartCoroutine(Movimientos());
           
        }
       
    }
    IEnumerator Movimientos()
    {

       
       
        if (distancia > distanciaS)
        {
            transform.LookAt(target);

        }
       
            Vector3 EnemigoV = new Vector3(0, 0, 2.0f);
            EnemigoV = target.position - transform.position;
            if (Vector3.Distance(transform.position, target.position) >= distancia)
            {
                ani.SetFloat("andar", 1.0f);
               
                rigidBody.velocity = EnemigoV;
               
           }



        yield return new WaitForSeconds(3f);

            if (Vector3.Distance(transform.position, target.position) <= distanciaS)
            {
                ani.SetFloat("andar", -1.0f);

                rigidBody.velocity = -EnemigoV;

            }

       

    }







    public IEnumerator Golpes()
    {
        yield return null;
        patada1();
        yield return new WaitForSeconds(2.0f);
        patada2();
        yield return new WaitForSeconds(4.0f);
        puno1();
        yield return new WaitForSeconds(6.0f);
        puno2();
        yield return new WaitForSeconds(8.0f);

    }

    void patada1()
    {


        if (Vector3.Distance(transform.position, target.position) >= distanciaS)
        {
            ani.SetInteger("estado", 1);

            colisionplayerPataIz.isTrigger = true;
            if (Vector3.Distance(transform.position, target.position) <= distancia)
            {
                ani.SetFloat("andar", 0.0f);
               
               
            }
        }
       
       else
       {
                colisionplayerPataIz.isTrigger = false;
                colisionplayerPunoDe.isTrigger = false;
                colisionplayerPunoIz.isTrigger = false;
                colisionplayerPataDe.isTrigger = false;
               
       }
       
           

       

    }
   void patada2()
    {

        if (Vector3.Distance(transform.position, target.position) >= distanciaS)
        {
            ani.SetInteger("estado", 2);
           
            colisionplayerPataDe.isTrigger = true;
            if (Vector3.Distance(transform.position, target.position) <= distancia)
            {
                ani.SetFloat("andar", 0.0f);
               
               
            }
        }
        else
        {
            colisionplayerPataDe.isTrigger = false;
            colisionplayerPunoDe.isTrigger = false;
            colisionplayerPunoIz.isTrigger = false;
            colisionplayerPataIz.isTrigger = false;
        }





    }

   void puno1()
    {


        if (Vector3.Distance(transform.position, target.position) >= distanciaS)
        {
            ani.SetInteger("estado", 3);
           
            colisionplayerPunoDe.isTrigger = true;
            colisionplayerPunoIz.isTrigger = true;
            if (Vector3.Distance(transform.position, target.position) <= distancia)
            {
                ani.SetFloat("andar", 0.0f);
               
            }  
        }
        else
        {
                colisionplayerPunoDe.isTrigger = false;
                colisionplayerPunoIz.isTrigger = false;
                colisionplayerPataDe.isTrigger = false;
                colisionplayerPataIz.isTrigger = false;
        }

    }
   void puno2()
    {

        if (Vector3.Distance(transform.position, target.position) >= distanciaS)
        {
            ani.SetInteger("estado", 4);
           
            colisionplayerPunoDe.isTrigger = true;
            if (Vector3.Distance(transform.position, target.position) <= distancia)
            {
                ani.SetFloat("andar", 0.0f);
               
               
            }
        }

        else
        {
            colisionplayerPunoDe.isTrigger = false;
            colisionplayerPunoIz.isTrigger = false;
            colisionplayerPataDe.isTrigger = false;
            colisionplayerPataIz.isTrigger = false;
        }


    }

   
   
}
 

Hola que tal!!La verdad es que no entiendo a qué te refieres. ¿Puedes explicarlo mejor? Saludos


Cita de: kaito date=1450456681" data-ipsquote="" data-cite="kaito" class="ipsQuoteSi aplico kinematic no funciona las fisicas y el enemigo se mueve por fisica se queda quieto. 
Ya lo he conseguido pero me falta que el enemigo se desactive cuando el personaje lo golpee
Le quito la vida del tiron con unos pocos de puñetazos de todas formas gracias.

Etiquetas: