- Home /
How to create shoots
I want to make a ship fires and one the fire hit other object ,it will be destroyed..Can anyone help me how to define fire? is it possible to use particle system or anything??
Answer by Cinematronic · Jan 24, 2013 at 12:30 AM
You can start by creating a prefab for your cannonballs or whatever you wan to shot. then make a script for your ship, that instantiates the prefab, and apply force to it at button down, like rigidbody.AddForce(2, 5,0); , dunno, sort of.
EDIT: Create the prefab for the bullet. Add an empty GameObject as a child of the ship, and locate it in the tip of the barrel. Then, add this script to the ship, and then drag the objects to the respective variable. I'm doing this by memory, guess it should work:
var bullet : GameObject;
var bulletSpawn : GameObject;
function Update()
{
if (Input.GetButtonDown("Shoot"))
{
var bulletShoot = Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
bulletShoot.AddForce(2, 5,0); //use the numbers that works for you
}
}
Answer by Matthew0123 · Jan 23, 2013 at 11:14 PM
Alright, I'll use a script I have already setup and will explain it to you.
var cannonballPrefab: Rigidbody; // Finds ammo. Must be on Scene to be found.
private var initialVelocity: float; // Starting Speed
private var cannonMuzzle: GameObject; // The Muzzle From where it shoots from
private var cannonBall: Rigidbody; // Place holder for the creation of the projectile
private var interaction: String; //interaction type
private var cannonName: String; // Returns cannon
function Update () {
cannonName = GameObject.Find("First Person Controller").GetComponent(Interactions).Cannon;
initialVelocity = 200; // Setting speed
cannonMuzzle = GameObject.Find(cannonName + "/WholeCannon/CannonBone/Projectiles"); //Will find the ammo
interaction = GameObject.Find("First Person Controller").GetComponent(Interactions).interaction; //Check interaction
if (Input.GetKeyDown("mouse 0") && interaction == "Cannon") {
cannonBall = Instantiate(cannonballPrefab, cannonMuzzle.transform.position, cannonMuzzle.transform.rotation); // Creates the projectile
cannonBall.velocity = transform.TransformDirection(Vector3.forward * initialVelocity); // Add a forward motion onto it.
cannonMuzzle.particleSystem.Play(); // Play fire animation
var Cannon: GameObject = GameObject.Find(cannonName);
var animationComponent: Animation = Cannon.GetComponent(Animation);
animationComponent.animation.Play();
}
}
I do not feel like trying to explain how to destroy the cannon upon impact, cause I do not feel able enough to correctly explain it to someone else like I can with this.