Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        closestNPC = null;
        foreach (AiComponent npc in NPC)
        {
            if (npc.IsDead)
            {
                continue;
            }
            if (!closestNPC || Vector3.Distance(npc.transform.position, transform.position) < Vector3.Distance(closestNPC.transform.position, transform.position))
            {
                closestNPC = npc;
            }
        }

        bool IsAtKillingDistance = closestNPC && Vector3.Distance(closestNPC.transform.position, transform.position) < killDistance && !IsTriggering("AI");

        float IsMoving = 0.0f;

        if (Input.GetKey(KeyCode.RightArrow))
        {
            IsMoving = 1.0f;
        }
        else if (Input.GetKey(KeyCode.LeftArrow))
        {
            IsMoving = -1.0f;
        }

        // ContextualUI
        if (IsTriggering("Corpse"))
        {
            ContextualUI.IsEnabled = true;
            image.sprite           = reviveSprite;
        }
        else if (IsAtKillingDistance)
        {
            ContextualUI.IsEnabled = true;
            image.sprite           = killingSprite;
        }
        else
        {
            // Default Behavior
            ContextualUI.IsEnabled = IsTriggering("ContextualUI");
            image.sprite           = hidingSprite;
        }

        // Actions
        if (Input.GetKeyDown(KeyCode.Space))
        {
            Inventory.NextItem();
        }

        if (Input.GetKeyDown(KeyCode.Return))
        {
            if (IsTriggering("Corpse"))
            {
                GetComponent <ReviveComponent>().Revive();
            }
            else if (IsAtKillingDistance && closestNPC)
            {
                // Kill Someone
                CharacterAnimator.SetTrigger("Kill");

                Animator NPCAnimator = closestNPC.GetComponentInChildren <Animator>();
                if (NPCAnimator)
                {
                    NPCAnimator.SetTrigger("Kill");
                }

                AiComponent Component = closestNPC.GetComponent <AiComponent>();
                if (Component)
                {
                    Component.Kill();
                }

                // Update HUD
                ScreenUIComponent.HUD.SoulGauge.DecreaseSoulsCount();
            }
            else if (IsTriggering("ContextualUI"))
            {
                ToggleHide();
            }
            else
            {
                Inventory.ToggleCurrentItem(CharacterAnimator);
                IsSpottable = !Inventory.IsWearing;
            }
        }

        Move(IsMoving);
    }