コード例 #1
0
    void InteractableCheck()
    {
        int counter = 0;

        foreach (GameObject container in containerList)
        {
            if (player.transform.position.x > container.transform.position.x - distance &&
                player.transform.position.x < container.transform.position.x + distance &&
                player.transform.position.z > container.transform.position.z - distance &&
                player.transform.position.z < container.transform.position.z + distance)
            {
                containerNear = true;

                //set closest
                if (closest == null)
                {
                    closest = container;
                }
                else if (closest != null || closest != container)
                {
                    //if this item is closer
                    if (Vector3.Distance(player.transform.position, container.transform.position) < Vector3.Distance(player.transform.position, closest.transform.position))
                    {
                        closest = container;
                    }
                }
            }
            else
            {
                counter++;
            }
        }
        //if none of the items were near, don't bring up the option
        if (counter == containerList.Count)
        {
            containerNear     = false;
            collectedEvidence = false;
            collectedItem     = false;
        }

        //if the player is near an item, let them pick it up
        if (containerNear)
        {
            ContainerScript containerScript = closest.GetComponent <ContainerScript>();
            visited = containerScript.visited;

            if (Input.GetKeyDown(KeyCode.E))
            {
                containerScript.visited = true;

                //change the container's state to being open
                //change boolean state from open to closed or vice versa
                if (containerScript.open)
                {
                    containerScript.open = false;
                }
                else if (!containerScript.open)
                {
                    containerScript.open = true;
                }

                if (containerScript.requiredItem.Length == 0 || containerScript.requiredItem[0] == "")
                {
                    if (!containerScript.playerHasRequiredItem && containerScript.requiredItem[0] != "") // if there is a required item for this container, check if the player has it
                    {
                        foreach (string j in inventory)
                        {
                            if (j == containerScript.requiredItem[0])
                            {
                                containerScript.playerHasRequiredItem = true;
                                // Attempting to remove the sprite from the inventory once the required item is used.
                                //inventory.Remove(containerScript.requiredItem);
                                //inventorySprites.Remove(containerScript.requiredItem);
                            }
                        }
                    }
                    if (containerScript.containsEvidence && containerScript.playerHasRequiredItem) //if the container held an item, add it to the inventory
                    {
                        //inventory.Remove(containerScript.requiredItem[0]);
                        //inventorySprites.Remove(containerScript.requiredItem[0]);

                        evidenceCollected.Add(containerScript.item);
                        inventory.Add(containerScript.item);
                        inventorySprites.Add(containerScript.item, containerScript.image);

                        containerScript.item             = "Empty";
                        containerScript.contains         = false;
                        containerScript.containsEvidence = false;

                        collectedEvidence = true;
                    }
                    else if (containerScript.contains && containerScript.playerHasRequiredItem)
                    {
                        //inventory.Remove(containerScript.requiredItem[0]);
                        //inventorySprites.Remove(containerScript.requiredItem[0]);

                        inventory.Add(containerScript.item);
                        inventorySprites.Add(containerScript.item, containerScript.image);



                        containerScript.item     = "Empty";
                        containerScript.contains = false;

                        collectedItem = true;
                    }
                }

                else
                {
                    for (int i = 0; i < containerScript.requiredItem.Length; i++)
                    {
                        if (!containerScript.playerHasRequiredItem && containerScript.requiredItem[i] != "") // if there is a required item for this container, check if the player has it
                        {
                            int check = 0;
                            foreach (string j in inventory)
                            {
                                if (j == containerScript.requiredItem[i])
                                {
                                    if (j == "BrokenVase" || j == "SaucyNovel" || j == "Photo")
                                    {
                                        check++;
                                        if (check == containerScript.requiredItem.Length)
                                        {
                                            containerScript.playerHasRequiredItem = true;
                                        }
                                    }
                                    else
                                    {
                                        containerScript.playerHasRequiredItem = true;
                                    }

                                    // Attempting to remove the sprite from the inventory once the required item is used.
                                    //inventory.Remove(containerScript.requiredItem);
                                    //inventorySprites.Remove(containerScript.requiredItem);
                                }
                            }
                        }
                        if (containerScript.containsEvidence && containerScript.playerHasRequiredItem) //if the container held an item, add it to the inventory
                        {
                            inventory.Remove(containerScript.requiredItem[i]);
                            inventorySprites.Remove(containerScript.requiredItem[i]);

                            evidenceCollected.Add(containerScript.item);
                            inventory.Add(containerScript.item);
                            inventorySprites.Add(containerScript.item, containerScript.image);

                            containerScript.item             = "Empty";
                            containerScript.contains         = false;
                            containerScript.containsEvidence = false;

                            collectedEvidence = true;
                        }
                        else if (containerScript.contains && containerScript.playerHasRequiredItem)
                        {
                            inventory.Remove(containerScript.requiredItem[i]);
                            inventorySprites.Remove(containerScript.requiredItem[i]);

                            inventory.Add(containerScript.item);
                            inventorySprites.Add(containerScript.item, containerScript.image);

                            containerScript.item     = "Empty";
                            containerScript.contains = false;

                            collectedItem = true;
                        }
                    }
                }

                if (inventory.Contains("Photo") && inventory.Contains("Cocktail"))
                {
                    if (inventory.Contains("Money_1") || inventory.Contains("Money_2"))
                    {
                        if (inventory.Contains("Money_1"))
                        {
                            inventory.Remove("Money_1");
                        }

                        else if (inventory.Contains("Money_2"))
                        {
                            inventory.Remove("Money_2");
                        }
                    }
                }
            }
        }
    }
コード例 #2
0
 private void Update()
 {
     if (!this.Occupied)
     {
         if (this.Prompt.HideButton[0])
         {
             if (this.Yandere.Armed)
             {
                 this.UpdatePrompt();
             }
         }
         else if (this.Prompt.Circle[0].fillAmount == 0f)
         {
             this.Prompt.Circle[0].fillAmount = 1f;
             if (this.Yandere.PickUp != null)
             {
                 this.Item = this.Yandere.PickUp.gameObject;
                 this.Yandere.MyController.radius = 0.5f;
                 this.Yandere.EmptyHands();
             }
             else
             {
                 this.Item = this.Yandere.EquippedWeapon.gameObject;
                 this.Yandere.DropTimer[this.Yandere.Equipped] = 0.5f;
                 this.Yandere.DropWeapon(this.Yandere.Equipped);
                 this.Weapon = true;
             }
             this.Item.transform.parent = this.TrashPosition;
             this.Item.GetComponent <Rigidbody>().useGravity = false;
             this.Item.GetComponent <Collider>().enabled     = false;
             this.Item.GetComponent <PromptScript>().Hide();
             this.Item.GetComponent <PromptScript>().enabled = false;
             this.Occupied = true;
             this.UpdatePrompt();
         }
     }
     else if (this.Prompt.Circle[0].fillAmount == 0f)
     {
         this.Prompt.Circle[0].fillAmount = 1f;
         this.Item.GetComponent <PromptScript>().Circle[3].fillAmount = -1f;
         this.Item.GetComponent <PromptScript>().enabled = true;
         this.Item     = null;
         this.Occupied = false;
         this.Weapon   = false;
         this.UpdatePrompt();
     }
     if (this.Item != null)
     {
         if (this.Weapon)
         {
             this.Item.transform.localPosition    = new Vector3(0f, 0.29f, 0f);
             this.Item.transform.localEulerAngles = new Vector3(90f, 0f, 0f);
             if (this.Item.transform.parent != this.TrashPosition)
             {
                 this.Item   = null;
                 this.Weapon = false;
             }
         }
         else
         {
             this.Item.transform.localPosition    = new Vector3(0f, 0f, -0.021f);
             this.Item.transform.localEulerAngles = Vector3.zero;
         }
     }
     if (this.Wearable && this.Prompt.Circle[3].fillAmount == 0f)
     {
         this.Prompt.Circle[3].fillAmount = 1f;
         base.transform.parent            = this.Prompt.Yandere.Backpack;
         base.transform.localPosition     = Vector3.zero;
         base.transform.localEulerAngles  = new Vector3(90f, -154f, 0f);
         this.Prompt.Yandere.Container    = this.Container;
         this.Prompt.Yandere.WeaponMenu.UpdateSprites();
         this.Prompt.Yandere.ObstacleDetector.gameObject.SetActive(true);
         this.Prompt.MyCollider.enabled = false;
         this.Prompt.Hide();
         this.Prompt.enabled = false;
         Rigidbody component = base.GetComponent <Rigidbody>();
         component.isKinematic = true;
         component.useGravity  = false;
     }
 }