- Home /
Instanciate Object Problem for Shooting
Hi all, i try to do my first shoot but i have one problem (I am new in Unity3D).
i Have this code:
public var puntoDisparo: Transform;
public var bala: GameObject;
public var velocidad: float = 10;
function Update () {
if(Input.GetButtonDown("Fire1")){
var cloneBala : GameObject = Instantiate (bala, puntoDisparo.position, Camera.main.transform.rotation);
cloneBala.rigidbody.AddForce(new Vector3(0,0,velocidad), ForceMode.velocityChange);
}
}
Before add this line cloneBala.rigidbody.AddForce(new Vector3(0,0,velocidad), ForceMode.velocityChange);
When i clic on left button mouse my gameObject is perfectly duplicated but however when i try to do that this gameObject can move foward i have this error:
NullReferenceException: Object reference not set to an instance of an object Disparo.Update () (at Assets/Scripts/Disparo.js:15)
'Disparo' is the script that i show before.. So.. What happend? my gameObject only move when i push it with others gameObjects (same gameObjects)
Here some pics.. In the Screen Shot UnityShoot you can see that only when i clicked 3 times if when one gameobject fly! :(
Please Help i want to keep learning
ScreenShots 125125
http://www.dropbox.com/gallery/45494271/1/Screen%20Shots%20Unity3D%20FPS?h=317b52
Do you have a rigidbody on your prefab? It looks like it can't find the component! Otherwise, try putting an 'as GameObject' after your instantiation line (between the last bracket and the semicolon)
Answer by aldonaletto · Oct 28, 2011 at 12:29 AM
Based on the pictures you provided, it should work - the only problem is ForceMode.velocityChange: it should be ForceMode.VelocityChange. Anyway, this code will make the bullet go in the Z direction; you should use cloneBala.transform.forward instead. You could also set rigidbody.velocity instead of using VelocityChange:
cloneBala.rigidbody.velocity = cloneBala.transform.forward * velocidad;
Answer by Nekros28 · Oct 29, 2011 at 07:38 AM
Mr. aldonaletto Thanks very much for help me.. when i change ForceMode.velocityChange for ForceMode.VelocityChange it's work but it not take the rotation of my camera (always shoot in one direction), but when i set there line for:
cloneBala.rigidbody.velocity = cloneBala.transform.forward * velocidad;
All Fine! THANKS VERY MUCH.. But now i want to know why my old code not working, i'll read more for this and keep learning for understand what happend, one more time thnks for your time! your answer WORK PERFECTLY
Your answer
Follow this Question
Related Questions
NullReferenceException firing bullets 1 Answer
Null Reference Exception when Trying to get script of newly instantiated Gameobject 1 Answer
I want to be able to make a good shoot script that actually works. 0 Answers
Shooting Script Instantiate Problems. Help? 0 Answers
iTween NullReferenceException error 1 Answer