Hi, can you please tell me the steps of shooting a gun in Unity 3D? I really need HELP!!!!
2 Answers
2Take a look at:
http://answers.unity3d.com/questions/3495/shooting-a-projectile-forward-in-3d-space
and :
http://unity3d.com/support/documentation/ScriptReference/Object.Instantiate.html
That's all you need.
@Brian Foster here is what i did to make lasers come out of my hands in game, but if you follow these steps, you will be able to make any bullet come out of any weapon…
#1: put an empty GameObject where you want your bullets to come through
#1.5: make your game object a child of the weapon, as the bullets will be coming out of the gameObject.
#2:make your bullet, then, make it a prefab.
#3:add the following script:
using UnityEngine;
using System.Collections;
public class Press_Space_to_Fire : MonoBehaviour
{
//Drag in the Bullet Emitter from the Component Inspector.
public GameObject Bullet_Emitter;
//Drag in the Bullet Prefab from the Component Inspector.
public GameObject Bullet;
//Enter the Speed of the Bullet from the Component Inspector.
public float Bullet_Forward_Force;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if (Input.GetButtonDown("Fire1"))
{
//The Bullet instantiation happens here.
GameObject Temporary_Bullet_Handler;
Temporary_Bullet_Handler = Instantiate(Bullet,Bullet_Emitter.transform.position,Bullet_Emitter.transform.rotation) as GameObject;
//Sometimes bullets may appear rotated incorrectly due to the way its pivot was set from the original modeling package.
//This is EASILY corrected here, you might have to rotate it from a different axis and or angle based on your particular mesh.
Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 90);
//Retrieve the Rigidbody component from the instantiated Bullet and control it.
Rigidbody Temporary_RigidBody;
Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();
//Tell the bullet to be "pushed" forward by an amount set by Bullet_Forward_Force.
Temporary_RigidBody.AddForce(transform.forward * Bullet_Forward_Force);
//Basic Clean Up, set the Bullets to self destruct after 10 Seconds, I am being VERY generous here, normally 3 seconds is plenty.
Destroy(Temporary_Bullet_Handler, 10.0f);
}
}
}
(you must call this script Press_Space_to_Fire, or, change the public class to whatever you want the name to be before making your own script name.)