- Home /
Same objects doing the same thing
I'm making a survival game. In this game you can pick up objects, and put it into inventory. I made a gun in blender and put it into the game and put the pick up script in it. You can pick it up, put into your inventory and all that, but then I wanted to put multiple guns so I can test if my inventory script could find out the first empty slot in the inventory window. So i did.It worked, but there was one problem. When I pick up one gun, all objects with tags concerning with "cm9", disappear. I know, I could make the duplicates of that one gun have a different tag, but I don't want that. Because it would make randomized loot spawns(which I plan for the future) not work as I expect it to! What should I do?
don't use tags.. perhaps just use the object name or check if the object that you're picking up contains a specific script.. or just fix the part of the code that removes all other instances of the object with the same tag..
also, try posting some code.. it's a lot easier to help you that way :)
Here.
using UnityEngine; using System.Collections; using System.Collections.Generic;
public class PickUpGun : $$anonymous$$onoBehaviour { public GameObject Gun; public bool GotPistol; private Ray mouseRay; private RaycastHit rayHit;
private Dictionary<int, string> lootDictionary = new Dictionary <int, string>()
{{0, string.Empty},
{1, string.Empty},
{2, string.Empty},
{3, string.Empty},
{4, string.Empty},
{5, string.Empty}
};
ItemClass itemObject = new ItemClass();
public GameObject objectwithInventory;
Inventory Inventory ;
// Use this for initialization
void Start () {
lootDictionary [0] = itemObject.cm9Item.name;
lootDictionary [1] = itemObject.breadItem.name;
lootDictionary [2] = itemObject.painkillersItem.name;
Inventory = objectwithInventory.GetComponent<Inventory>();
}
// Update is called once per frame
void Update () {
mouseRay = Camera.main.ScreenPointToRay (new Vector3 (Screen.width / 2, Screen.height / 2,0));
if (Input.GetButtonDown ("Fire1"))
{
Physics.Raycast(mouseRay, out rayHit);
if(rayHit.collider.transform.tag == "cm9")
{
Destroy(Gun);
GotPistol = true;
if(GotPistol == true){
Inventory.inventorynamesDictionary [0] = lootDictionary[0];
Inventory.FirstSlot = true;
Debug.Log ("First Slot is now full");
}
if(Inventory.FirstSlot = true && Inventory.SecondSlot == false)
{
Debug.Log("Second slot is now full");
Inventory.inventorynamesDictionary [1] = lootDictionary[0];
}
}
}
}
}
Your answer
Follow this Question
Related Questions
Enabling/Disabling Multiple Tagged objects 1 Answer
Creating tags via code 3 Answers
making prefabs at runtime? 2 Answers
How to simplify my Equipment method? 1 Answer
Why isn't this script working? (Beginner in coding) 2 Answers