예제 #1
0
    // Gère la condition permettant de savoir quelle attaque doit être effectuer et gère le déplacement
    void Update()
    {
        float distance = (Vector3.Distance(Teddy.transform.position, gameObject.transform.position));

        //Si Teddy est proche du clown, alors ce dernier ce met à tourner
        if (distance < 0.3)
        {
            _enfant.localEulerAngles = new Vector3(_enfant.localEulerAngles.x, _enfant.localEulerAngles.y + 5, _enfant.localEulerAngles.z);
            vitesseDeplacement       = 7;
            Deplacement();
        }
        //sinon il va sauter
        else if (distance < 0.7)
        {
            if (_solTouche == true)
            {
                gameObject.GetComponent <Rigidbody>().AddForce(0, 0.5f, 0, ForceMode.VelocityChange);
                _solTouche = false;
            }
            vitesseDeplacement = 15;
            Deplacement();

            //détecte la direction de teddy et assige un angle au clown
            if (Teddy.transform.position.x - transform.position.x > 0)
            {
                _enfant.localEulerAngles = new Vector3(_enfant.localEulerAngles.x, 0, _enfant.localEulerAngles.z);
            }
            else
            {
                _enfant.localEulerAngles = new Vector3(_enfant.localEulerAngles.x, 180, _enfant.localEulerAngles.z);
            }
        }
        //si l'ennemi est trop loins et n'est pas blaisser, alors l'ennemi est détruit sans donner l'exp
        else if (distance > 1.3 && _ennemi.pointsVie == _ennemi.pointsVieMax && !_ennemi.estUnique)
        {
            _ennemi.Mort(false);
        }

        gameObject.GetComponent <Rigidbody>().velocity = _deplacement;
    }
예제 #2
0
    // Gère le déplacement de la voiture et sa destruction si Teddy est trop loins
    void Update()
    {
        float distance = (Vector3.Distance(Teddy.transform.position, gameObject.transform.position));

        //si teddy est suffisamment proche il fonce vers lui
        if (distance < 0.6)
        {
            if ((Teddy.transform.position.x - gameObject.transform.position.x) > 0)
            {
                _deplacement = new Vector3(vitesseDeplacement * Time.deltaTime, 0, 0);
            }
            else
            {
                _deplacement = new Vector3(-vitesseDeplacement * Time.deltaTime, 0, 0);
            }
        }
        //si teddy est trop loins il se détruit
        else if (distance > 1.1 && _ennemi.pointsVie == _ennemi.pointsVieMax && !_ennemi.estUnique)
        {
            _ennemi.Mort(false);
        }


        /************************************************Gestion de la détection avec le sol************************************************/
        RaycastHit raycast_0;
        RaycastHit raycast_1;
        RaycastHit raycast_2;

        //détection du raycast_0 raycast
        if (Physics.Raycast(gameObject.transform.position, gameObject.transform.TransformDirection(Vector3.back), out raycast_0, distanceRaycast))
        {
            if (debugRaycast)
            {
                Debug.DrawRay(gameObject.transform.position, gameObject.transform.TransformDirection(Vector3.back) * raycast_0.distance, Color.yellow);
            }
        }
        //détection du raycast_1 raycast
        else if (Physics.Raycast(gameObject.transform.position - (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back), out raycast_1, distanceRaycastCote))
        {
            if (debugRaycast)
            {
                Debug.DrawRay(gameObject.transform.position - (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back) * raycast_1.distance, Color.green);
            }
        }
        //détection du raycast_2 raycast
        else if (Physics.Raycast(gameObject.transform.position + (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back), out raycast_2, distanceRaycastCote))
        {
            if (debugRaycast)
            {
                Debug.DrawRay(gameObject.transform.position + (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back) * raycast_2.distance, Color.blue);
            }
        }
        //si aucun raycast ne touche de sols alors on applique une gravité
        else
        {
            _deplacement.y = -2;
            if (debugRaycast)
            {
                Debug.DrawRay(gameObject.transform.position - (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back) * distanceRaycastCote, Color.red);
                Debug.DrawRay(gameObject.transform.position, gameObject.transform.TransformDirection(Vector3.back) * distanceRaycast, Color.red);
                Debug.DrawRay(gameObject.transform.position + (Vector3.right * raycastDecalement), gameObject.transform.TransformDirection(Vector3.back) * distanceRaycastCote, Color.red);
            }
            ;
        }



        gameObject.GetComponent <Rigidbody>().velocity = _deplacement;
        ControlAnimation();
    }