Mouse interaction (Shooting)
Now that we've learned how to do a basic cannon (see previous post), we can move on to a more "complex" type of shooting and this is with the position of the mouse.
You will need to create an empty GameObject called Bullet Emitter and put it a a Son of your Object that you want to be the shooter. And place it were you want the bullet to shoot out from. Of course you'll need to create your bullet GameObject and make it a Prefab, with Rigidbody and collider. Add this script to the Object that you want to be the shooter called Projectile.
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Projectile : 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.GetKey(KeyCode.Mouse0)) { //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); } } }
Now you'll need to drag your GameObject Bullet Emitter, Capsule and add a Force.
Finished!!