- Home /
Question by
goosoodude · Sep 24, 2011 at 06:09 PM ·
rocket
Fps tutorial: Rocket problem: Rocket doesnt work.
I am using a robot with a gun as my AI. The rocket won't even fire properly. It just goes somewhere else, when it is supposed to go to the player. Even when I try to use the launcher it just falls down and explodes and when i try to fire it after it explodes, an error pops up saying that i am trying to fire a rigibody that has been destroyed.
The Script for rocket:
// The reference to the explosion prefab
var explosion : GameObject;
var timeOut = 3.0;
// Kill the rocket after a while automatically
function Start () {
Invoke("Kill", timeOut);
}
function OnCollisionEnter (collision : Collision) {
// Instantiate explosion at the impact point and rotate the explosion
// so that the y-axis faces along the surface normal
var contact : ContactPoint = collision.contacts[0];
var rotation = Quaternion.FromToRotation(Vector3.up, contact.normal);
Instantiate (explosion, contact.point, rotation);
// And kill our selves
Kill ();
}
function Kill () {
// Stop emitting particles in any children
var emitter : ParticleEmitter= GetComponentInChildren(ParticleEmitter);
if (emitter)
emitter.emit = false;
// Detach children - We do this to detach the trail rendererer which should be set up to auto destruct
transform.DetachChildren();
// Destroy the projectile
Destroy(gameObject);
}
@script RequireComponent (Rigidbody)
The rocket Launcher script:
var projectile : Rigidbody;
var initialSpeed = 20.0;
var reloadTime = 0.5;
var ammoCount = 20;
private var lastShot = -10.0;
function Fire () {
// Did the time exceed the reload time?
if (Time.time > reloadTime + lastShot && ammoCount > 0) {
// create a new projectile, use the same position and rotation as the Launcher.
var instantiatedProjectile : Rigidbody = Instantiate (projectile, transform.position, transform.rotation);
// Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform.
instantiatedProjectile.velocity = transform.TransformDirection(Vector3 (0, 0, initialSpeed));
// Ignore collisions between the missile and the character controller
Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);
lastShot = Time.time;
ammoCount--;
}
}
Thanks
Comment
Is the rocket on a prefab? It looks like you're trying to use a scene object for this!
Oh and yea, it is a prefab, I just use the one from the fps tutorial. also, I ad the rocket to the scene and possition it in front of the launcher. In addition, when i ad the rocket's script, it just takes away the prefab. (which you are probably already know!)