static void AssignEmeraldAIComponents()
    {
        List <SkinnedMeshRenderer> ObjRenderer = new List <SkinnedMeshRenderer>();

        foreach (GameObject obj in Selection.gameObjects)
        {
            obj.AddComponent <Emerald_Animal_AI>();

            Emerald_Animal_AI Emerald = obj.GetComponent <Emerald_Animal_AI>();

            Component[] AllComponents = obj.GetComponents <Component>();

            for (int i = 0; i < AllComponents.Length; i++)
            {
                UnityEditorInternal.ComponentUtility.MoveComponentUp(Emerald);
            }

            foreach (SkinnedMeshRenderer R in obj.GetComponentsInChildren <SkinnedMeshRenderer>())
            {
                if (R != obj.GetComponent <SkinnedMeshRenderer>())
                {
                    ObjRenderer.Add(R);
                }
            }

            if (ObjRenderer.Count > 0)
            {
                Bounds RendererBounds = ObjRenderer[0].bounds;
                obj.GetComponent <BoxCollider>().size   = new Vector3(RendererBounds.extents.x, RendererBounds.size.y, RendererBounds.extents.z);
                obj.GetComponent <BoxCollider>().center = new Vector3(obj.GetComponent <BoxCollider>().center.x, RendererBounds.extents.y, obj.GetComponent <BoxCollider>().center.z);
            }
        }

        if (Selection.gameObjects.Length == 0)
        {
            Debug.Log("In order for the New AI button to work, you must have an active GameObject selected.");
        }
    }
Beispiel #2
0
    // Update is called once per frame
    void Update()
    {
        Ray ray = PlayerCamera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));

        if (Physics.Raycast(ray, out hit, lookDistance))
        {
            if (hit.collider.gameObject.tag == EmeraldAITag && updateTimer > 0.5f)
            {
                currentlyLookingAtTarget = true;
                currentTarget            = hit.collider.gameObject;
                currentEmeraldSystem     = currentTarget.GetComponent <Emerald_Animal_AI>();

                healthBarText.text       = "==== " + currentEmeraldSystem.NPCName + " ====";
                healthBarSlider.maxValue = currentEmeraldSystem.startingHealth;

                updateTimer = 0;
            }

            if (hit.collider.gameObject.tag == EmeraldAITag)
            {
                updateTimer  += Time.deltaTime;
                lookAwayTimer = 0;
            }

            if (hit.collider.gameObject.tag != EmeraldAITag)
            {
                lookAwayTimer += Time.deltaTime;

                if (lookAwayTimer > lookAwaySeconds)
                {
                    currentlyLookingAtTarget = false;
                    currentTarget            = null;
                }
            }
        }


        if (deathTimerActive)
        {
            deathTimer += Time.deltaTime;

            if (deathTimer > 1)
            {
                HealthBarCanvas.SetActive(false);
                currentlyLookingAtTarget = false;
                deathTimerActive         = false;
                currentTarget            = null;
            }
        }

        if (currentlyLookingAtTarget && !deathTimerActive)
        {
            HealthBarCanvas.SetActive(true);
            healthBarSlider.value = currentEmeraldSystem.currentHealth;

            if (currentEmeraldSystem.currentHealth <= 0)
            {
                deathTimerActive = true;
            }
        }

        if (!currentlyLookingAtTarget)
        {
            HealthBarCanvas.SetActive(false);
        }
    }