So I try to apply a force here Code (CSharp): void Update(){ if (isHeld) { gameObject.GetComponent<Rigidbody>().useGravity = false; ActiveUse (); } else { countToThrow -= 1; if(countToThrow == 0){ this.gameObject.GetComponent<Rigidbody>().AddRelativeForce(0.0f,throwup,throwforward); CollisionsModel.enabled = true; gameObject.GetComponent<Rigidbody>().useGravity = true; } } } The countdown timer is set to 2 when I call the DropWeapon Method Code (CSharp): public void DropWeapon(PlayerContentManager PCM, Gunscript Gs){ PCM.ActiveWeapon = null; Gs.PCM = null; Gs.isHeld = false; Gs.countToThrow = 2; } The countToThrow if statement definitely goes through 0 because the other lines in that if statement fire and I can observe it counting. However the force doesn't apply, I also am sure it has a rigid body the weight is the real weight of an AK47 and it only drops to the ground with gravity no matter what I set the throwforward or throwup variable to.
I think you need to add the force as an impulse. The default force mode needs to be applied continuously. Use this instead: Code (CSharp): this.gameObject.GetComponent<Rigidbody>().AddRelativeForce(0.0f,throwup,throwforward, ForceMode.Impulse); And you should cache the rigidbody reference. It's bad for performance if you call GetComponent every frame.