Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
1
Question by Oliver08 · Aug 20, 2018 at 04:43 PM · c#unity 5fpsinventory

c# Weapon Pickup Script

Hello :) I am fairly new to Unity and i am trying to make a FPS. Currently, I am working on making the player able to pick up weapon off the floor, so far I have got it so the player can look at the object and press 'F' to make it disappear (just as a test, don't know if i need this) but I would like to make it so the player can pick up the weapon and add it to their inventory but I would like it so they can only hold two weapons at once and can switch between them. I am not sure what to do from here, any help (preferably in c#) would be appreciated. Thank You! In advance. :)

This is my code so far:

using System.Collections; using System.Collections.Generic; using UnityEngine;

public class WeaponPickup : MonoBehaviour { public GameObject playerCamera; //this is a reference to the main camera (drag & drop) public GameObject weapon;

 // Update is called once per frame
 void Update()
 {
     RaycastHit hitInfo; //a structure to hold hit information (gameobject we hit, position of the "impact" etc.)
     Ray r = new Ray(playerCamera.transform.position, playerCamera.transform.forward); //A ray starting from the camera, going forward

     //if we hit something
     if (Physics.Raycast(r, out hitInfo))
     {
         //if it is tagged as a weapon
         if (hitInfo.transform.CompareTag("Weapon"))
         {
             //if the user presses F
             if (Input.GetKeyDown(KeyCode.F))
             {
                 Debug.Log("Hi");
                 Destroy(weapon);
             }
         }
     }
 }

}

Comment
Add comment · Show 3
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image eses · Aug 20, 2018 at 05:44 PM 0
Share

Hi @Oliver08 - "I am not sure what to do from here"

I think you can search here for more info - there are tons of questions on inventory system, item pickup, adding item to inventory and so on - did you google for these also? I'm asking because there are many good tutorials on this topic.

You are not asking to spot an error in your code you made, you are asking someone else to provide you with the missing code "(preferably in c#) " for your system.

avatar image Oliver08 eses · Aug 20, 2018 at 05:49 PM 0
Share

Hi, i have searched but lots of them are in js not c# and most others i do not understand or am unsure how to implement them into what i have specifically .

avatar image Oliver08 eses · Aug 20, 2018 at 05:51 PM 0
Share

Yes, that is true

1 Reply

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by niiicolai · Aug 20, 2018 at 06:19 PM

Hi @Oliver08 - You are on the right way. Here is an example that can help you on the way.


 public class PickupManager {
 
     public Transform cameraTransform;
     public KeyCode pickupKey = KeyCode.F;
     public KeyCode dropKey = KeyCode.G;
     string weaponTag = "Weapon";
 
     public List<GameObject> weapons;
     public int maxWeapons = 2;
 
     // this variable represent the weapon you carry in your hand 
     public GameObject currentWeapon;
 
     // this variable represent your hand which you set as the parent of your currentWeapon
     public Transform hand;
 
     // Insert a gameobject which you drop inside your player gameobject and position it where you want to drop items from
     // to avoid dropping items inside your player
     public Transform dropPoint;
 
     void Update() {
 
         // SELECT WEAPONS
         if (Input.GetKeyDown(KeyCode.Alpha1)) {
             SelectWeapon(0);
         }
 
         if (Input.GetKeyDown(KeyCode.Alpha2)) {
             SelectWeapon(1);
         }
 
         // PICKUP WEAPONS
         RaycastHit hit;
         Ray ray = new Ray(cameraTransform.position, cameraTransform.forward);
 
         if (Physics.Raycast(ray, out hit)) {
             if (hit.transform.CompareTag(weaponTag) && Input.GetKeyDown(pickupKey) && weapons.Count < maxWeapons) {
                 
                 // save the weapon                
                 weapons.Add(hit.collider.gameObject);
             
                 // hides the weapon because it's now in our 'inventory'
                 hit.collider.gameObject.SetActive(false);
 
                 // now we can positioning the weapon at many other places.
                 // but for this demonstration where we just want to show a weapon
                 // in our hand at some point we do it now.
                 hit.transform.parent = hand;
                 hit.transform.position = Vector3.zero;
             }
         }
 
         // DROP WEAPONS
         // So let's say you wanted to add a feature where you wanted to drop the weapon you carry in your hand
         if (Input.GetKeyDown(dropKey) && currentWeapon != null) {
 
             // First ensure we remove our hand as parent for the weapon
             currentWeapon.transform.parent = null;
 
             // Move the weapon to the drop position
             currentWeapon.transform.position = dropPoint.position;
 
             // Remove it from our 'inventory'            
             var weaponInstanceId = currentWeapon.GetInstanceID();
             for (int i = 0; i < weapons.Count; i++) {
                 if (weapons[i].GetInstanceID() == weaponInstanceId) {
                     weapons.RemoveAt(i);
                     break;
                 }
             }
 
             // Remove it from our 'hand'
             currentWeapon = null;
         }
     }
 
     void SelectWeapon(int index) {
 
         // Ensure we have a weapon in the wanted 'slot'
         if (weapons.Count > index && weapons[index] != null) {                    
 
             // Check if we already is carrying a weapon
             if (currentWeapon != null) {
                 // hide the weapon                
                 currentWeapon.gameObject.SetActive(false);
             }
 
             // Add our new weapon
             currentWeapon = weapons[index];
 
             // Show our new weapon
             currentWeapon.SetActive(true);            
         }
     }
 }



Now in order to add different settings to each weapon, you could add a weapon script to your weapons and use that to store stuff like firerate, maxbullets etc. and then store a reference to the weapon script on weapons you pick up instead of the gameobject.

Comment
Add comment · Show 14 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Oliver08 · Aug 20, 2018 at 07:11 PM 0
Share

Thank You So $$anonymous$$uch! Ill try this and let you know of any issues :)

avatar image Oliver08 · Aug 20, 2018 at 07:34 PM 0
Share

Ok. Everything is working perfectly except a few things. When i drop the weapons they all go to the exact same place but face different ways depending on which way i am facing at the time. They also still have active scripts so when i fire with one gun, the dropped guns fire too. I am also able to pick up the weapons but when i switch to the slot that weapon is not in it just appears back at the drop point. Again, than you so much for the help so far

avatar image niiicolai Oliver08 · Aug 20, 2018 at 07:42 PM 0
Share

In order to answer why your gun keeps shooting you would have to show me your code. Did you add the weapon tag to your weapon? And does it have a collider?

avatar image niiicolai Oliver08 · Aug 20, 2018 at 07:45 PM 0
Share

Also your problem with the weapons dropping the same place. Did you add a gameobject inside your player gameobject and added to dropPoint? It's important that the dropPoint gameobject is a children of your player gameobject

avatar image Oliver08 niiicolai · Aug 20, 2018 at 07:55 PM 0
Share

I tagged all the weapons with 'Weapon and now when i pick up the weapon it comes to me but too far to the right in comparison to where it normally is.

Also, i have added an empty game object inside my player but no difference The weapons drop where my player is in the scene view before i play the game

Show more comments
Show more comments
avatar image zeref_slayer · Nov 12, 2020 at 05:12 AM 0
Share

can I ask when I use the code the code all perfect but when I try to play the weapon that I pick was deactive and than the weapon completely invisible. can you help me

avatar image unity_zC98d68tuYspdQ · Jan 19, 2021 at 03:31 PM 0
Share

Can you show us how you did that plz .. I'm new in unity

avatar image Cubemann · Mar 24, 2021 at 12:02 AM 0
Share

My gun is flying all over when I pick it back up. I don't have a animator help.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

587 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Distribute terrain in zones 3 Answers

How to delete prefabs without warning popping up? 0 Answers

2D Game has very bad lag because of one script? 0 Answers

Perfect inventory code giving errors? [C#] 1 Answer

Weird FPS Camera 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges