- Home /
missile homing script help
Hello guys! Help me please do a missile homing, I want get effect, like this:
I found answer here, but it write next
" Cannot convert 'UnityEngine.GameObject' to 'UnityEngine.Transform'."
Can you say what i must remake, to get missile homing please? I use following script:
For my Rocket Launcher
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--;
}
}
And this for my rocker
// 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)
I would try use script below, for missile homing, but one line (target = tar; //This line report a bug) report a bug " Cannot convert 'UnityEngine.GameObject' to 'UnityEngine.Transform'."
var targetTag : String;
var target : Transform;
var speed : float = 5;
function Start () {
var tar = GameObject.FindWithTag(targetTag);
if(tar)
target = tar; // report a bug
}
function Update () {
transform.lookAt(target);
transform.Translate(Vector3.forward*speed*Time.deltaTime);
}
Answer by Fattie · Jan 02, 2013 at 12:31 PM
these three lines of code
var tar = GameObject.FindWithTag(targetTag);
if(tar)
target = tar;
should be, for example, like this:
var ttt:GameObject;
ttt = GameObject.FindWithTag(targetTag);
if ( ttt )
target = ttt.transform;
if this answers this question, please "TICK" it to close it out. Don't hesitate to ask new different questions ok. Cheers!
(fixed a grammar mistake there, sorry)
Yes, I did it already, but anyway - my Rocket would not flies into the target, it just flies forward (
I attached it into the rocket, and it work, thanks)
var speed : float = 5;
function Update () { var target = GameObject.FindWithTag("Player1"); transform.LookAt(target.transform); transform.Translate(Vector3.forward*speed*0.5); }
Your answer
Follow this Question
Related Questions
I Need Help Building A Rocket/Missile That Hits A Target on The Other Side of a Planet 1 Answer
help with using lerp? 1 Answer
Having A Missile Follow An Enemy (Heat Seeker/Homing) 2 Answers
How to create homing missile that follows path using Unity and iTween 1 Answer
Homing missile not working. 1 Answer