Help with a universal item script
Ive been working on a inventory system like what older Resident evil games used and have very little experience in working with inventory all together, I came across a fantastic tutorial by Sykoo on this subject that was far more streamlined then my approach by using a universal item script to handle weapons, ammo, health etc... here is the script that he uses.
public void Start()
{
weaponManager = GameObject.FindWithTag("WeaponManager");
if(!playersWeapon)
{
int allWeapons = weaponManager.transform.childCount;
for (int i = 0; i < allWeapons; i++)
{
if (weaponManager.transform.GetChild(i).gameObject.GetComponent<Item>().ID == ID)
{
weapon = weaponManager.transform.GetChild(i).gameObject;
}
}
}
}
//Checks if item is a equipped
public void Update()
{
if(equipped)
{
anim = GetComponentInParent<Animator>();
anim.SetBool(weaponAnim, aimBool);
if (Input.GetKey(KeyCode.X))
{
aimBool = true;
}
else
{
aimBool = false;
}
//perform weapon acts here
}
}
//What you call on the slots script when you click on the item in the inventory
//Sets it active and sets the equipped boolean to true
public void ItemUsage()
{
//Weapon
if(type == "Weapon")
{
weapon.SetActive(true);
weapon.GetComponent<Item>().equipped = true;
}
//Health item
}
}
My question is how would i go about adding item logic? I could add generic public variables for range, damage and fire rate for the weapons which I could change based upon the weapon that it is, but the road block I see here is if im using a raycast to detect what im targeting and hitting for a pistol I feel like id have to add a bunch to account for spread of a shotgun, even so going about this route i feel like the script would start to become messy and confusing when I add the public variables for the other items.
A solution I found to keep this universal item script clean as possible this was to create a separate script on the weapon itself tailored for their unique characteristics and detect in this script 'aimBool' before it aloud the player to fire.
What would be the better or alternate way of going about this?
Any and all help is appreciated and I apologize if what im trying to convey is ambiguous
Your answer
Follow this Question
Related Questions
Zelda-like inventory system 0 Answers
Programmatically retrieving dynamic variable information from another script. 1 Answer
Item is missing in inventory slot after i pick up and delete the item. C# 0 Answers
How to select the item inside of my inventory slot? (Followed a tutorial into a rut) 0 Answers
Enum filter for Item system 1 Answer