コード例 #1
0
    public void NewTurn()
    {
        foreach (AI_Follower_Script af in allList)
        {
            af.NewTurn();
        }

        aiScript.aiEntity.GetComponent <AI_Follower_Script>().weaponRange.SetActive(false);
        aiScript.aiEntity = GetNextUnit().gameObject;

        if (currentTeam == 0)
        {
            CheckVisibleEnemies();
            aiScript.DistanceTemplate();
            aiScript.cameraTrolley.transform.position = aiScript.aiEntity.transform.position;
            aiScript.aiEntity.GetComponent <AI_Follower_Script>().weaponRange.SetActive(true);
        }
        else
        {
            aiScript.behaviourScript.TakeAction(aiScript.aiEntity.GetComponent <AI_Follower_Script>());
        }
    }
コード例 #2
0
    // Update is called once per frame
    void Update()
    {
        if (currentHealth < maxHealth)
        {
            healthBar.SetActive(true);
        }



        if (currentHealth > maxHealth)
        {
            currentHealth = maxHealth;
        }



        if (targetChunk != null)
        {
            if (currentChunk != endChunk)
            {
                if (this.transform.position.x <= targetChunk.positionX + 0.1f && this.transform.position.x > targetChunk.positionX - 0.1f && this.transform.position.z <= targetChunk.positionZ + 0.1f && this.transform.position.z > targetChunk.positionZ - 0.1f)
                {
                    // Change target chunk to next chunk in path list
                    int currentIndex = path.IndexOf(targetChunk);
                    if (currentIndex + 1 < path.Count)
                    {
                        targetChunk = path[currentIndex + 1];
                    }
                }
                else if (this.transform.position.x <= targetChunk.positionX + 0.1f && this.transform.position.x > targetChunk.positionX - 0.1f)
                {
                    // Move towards z centre of target chunk
                    transform.position = Vector3.MoveTowards(this.transform.position, targetChunk.transform.position, speed * Time.deltaTime);

                    Vector3    direction    = (targetChunk.transform.position - transform.position).normalized;
                    Quaternion lookRotation = Quaternion.LookRotation(direction);
                    transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, speed * Time.deltaTime);
                }
                else if (this.transform.position.z <= targetChunk.positionZ + 0.1f && this.transform.position.z > targetChunk.positionZ - 0.1f)
                {
                    // Move towards x centre of target chunk
                    transform.position = Vector3.MoveTowards(this.transform.position, targetChunk.transform.position, speed * Time.deltaTime);

                    Vector3    direction    = (targetChunk.transform.position - transform.position).normalized;
                    Quaternion lookRotation = Quaternion.LookRotation(direction);
                    transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, speed * Time.deltaTime);
                }
                else
                {
                    // Move towards centre of target chunk
                    transform.position = Vector3.MoveTowards(this.transform.position, targetChunk.transform.position, speed * Time.deltaTime);

                    Vector3    direction    = (targetChunk.transform.position - transform.position).normalized;
                    Quaternion lookRotation = Quaternion.LookRotation(direction);
                    transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, speed * Time.deltaTime);
                }
            }
            else if (this.transform.position.x != endChunk.positionX || this.transform.position.z != endChunk.positionZ)
            {
                //Move towards endChunk centre
                transform.position = Vector3.MoveTowards(this.transform.position, targetChunk.transform.position, speed * Time.deltaTime);

                Vector3    direction    = (targetChunk.transform.position - transform.position).normalized;
                Quaternion lookRotation = Quaternion.LookRotation(direction);
                transform.rotation = Quaternion.Slerp(transform.rotation, lookRotation, speed * Time.deltaTime);
            }
            //Do Nothing - turn off calculations?
            else
            {
                targetChunk = null;
                if (animManager.anim.GetBool("Running") == true)
                {
                    animManager.Run(false);
                    GetComponent <AudioSource>().Stop();
                }
                if (actions > 0 && turnScript.currentTeam == 0)
                {
                    aiScript.DistanceTemplate();
                    turnScript.CheckVisibleEnemies();
                }
                else if (actions > 0 && turnScript.currentTeam == 1)
                {
                    aiScript.behaviourScript.TakeAction(aiScript.aiEntity.GetComponent <AI_Follower_Script>());
                }
                else if (GetActions() == 0)
                {
                    turnScript.currentTeam = team;
                    aiScript.aiEntity.GetComponent <AI_Follower_Script>().weaponRange.SetActive(false);
                    aiScript.aiEntity = turnScript.GetNextUnit().gameObject;
                    if (turnScript.currentTeam == 0)
                    {
                        turnScript.CheckVisibleEnemies();
                        aiScript.DistanceTemplate();
                        turnScript.aiScript.cameraTrolley.transform.position = turnScript.aiScript.aiEntity.transform.position;
                        aiScript.aiEntity.GetComponent <AI_Follower_Script>().weaponRange.SetActive(true);
                    }
                    else
                    {
                        aiScript.behaviourScript.TakeAction(aiScript.aiEntity.GetComponent <AI_Follower_Script>());
                    }
                }
            }
        }
    }