Exemplo n.º 1
0
 // Start is called before the first frame update
 void Start()
 {
     player      = GameObject.Find("Mech");
     state       = JetState.descend;
     anim        = transform.GetChild(0).GetComponent <Animator>();
     nav         = gameObject.GetComponentInParent <NavMeshAgent>();
     nav.enabled = false;
 }
Exemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        switch (state)
        {
        case JetState.descend:
            transform.parent.transform.position -= new Vector3(0, .1f, 0);
            break;

        case JetState.hover:
            state = JetState.seek;
            break;

        case JetState.seek:
            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
            if (distanceToPlayer > 15)
            {
                nav.isStopped = false;
                //move to target
                //Debug.Log("move in");
                nav.SetDestination(player.transform.position);
                transform.LookAt(player.transform.position);
            }
            if (distanceToPlayer < 15)
            {
                nav.isStopped = true;
                StartCoroutine(DeployGuns());


                //play animation
                state = JetState.fight;
            }

            if (Time.time > nextRocketFireTime && rocketsFired < 4)
            {
                fireRocket();
                nextRocketFireTime = Time.time + 3;
            }


            break;

        case JetState.fight:
            distanceToPlayer = Vector3.Distance(player.transform.position, transform.position);
            //Debug.Log(distanceToPlayer);
            if (Time.time > nextRocketFireTime && rocketsFired < 4)
            {
                fireRocket();
                nextRocketFireTime = Time.time + 3;
            }


            if (distanceToPlayer < 13)
            {
                transform.parent.position += (transform.parent.position + (transform.parent.position - player.transform.position)).normalized * Time.deltaTime * 5;
                //nav.SetDestination(transform.parent.position + (transform.parent.position - player.transform.position));
            }

            if (distanceToPlayer > 20)
            {
                nav.isStopped = false;
                //move to target
                //Debug.Log("move in");
                nav.SetDestination(player.transform.position);
                transform.LookAt(player.transform.position);
            }
            transform.LookAt(player.transform.position);
            break;

        case JetState.die:
            Instantiate(explosion, transform.position, Quaternion.identity);
            Destroy(gameObject);
            break;
        }

        IEnumerator DeployGuns()
        {
            anim.SetBool("isAttacking", true);
            yield return(new WaitForSeconds(.5f));

            anim.SetBool("gunsDeployed", true);
        }
    }