- Home /
3D Heat Seeking Missile (C#) - Odd problem
setup : decoy and missile prefabs instantiated at run-time example : Missile being launched from right side of the screen, decoy from the left. Decoy's trajectory is random, either upward or downward, parabolic goal : missile should follow decoy, almost managed when chasing upwards, failed opposite. When decoy goes down, missile starts rotating up, after reaching vertical position continues to rotate down facing slowly decoy
//direction = decoy.transform.position - missile.transform.position;
//Quaternion rotation = Quaternion.LookRotation(direction);
//missile.transform.rotation = Quaternion.Lerp(missile].transform.rotation, rotation, Time.deltaTime * 20);
missile.transform.position = Vector3.MoveTowards(missile.transform.position, decoy.transform.position, speed[2] * Time.deltaTime);
missile.transform.rotation = Quaternion.RotateTowards(missile.transform.rotation, decoy.transform.rotation, 30 * Time.deltaTime);
Searched forum, youtube, all kinds of examples, tried Lerp, Slerp, whatnot...
Here is code for decoy :
lX = 0.05f;
lY = Random.Range(-1f, 1f);
if (lY > 0)
{
lY = Random.Range(0.02f, 0.04f);
lZ = Random.Range(0.025f, 0.05f);
}
else
{
lY = Random.Range(-0.04f, -0.02f);
lZ = Random.Range(-0.05f, -0.025f);
}
//previous values set once on instantiation
decoy.transform.position += new Vector3(lX,lY,lZ);
Any thoughts will be appreciated :-)
Cheers, Miša
Answer by misa67 · May 23, 2019 at 11:14 AM
Almost feeling sorry I found solution after 2 weeks of trial and error :-) In case someone else stumble upon simmilar annoyance...
//direction = decoy.transform.position - missile.transform.position;
missile.transform.position=
Vector3.MoveTowards(missile.transform.position, decoy.transform.position, speed[2] * Time.deltaTime);
missile.transform.rotation = Quaternion.LookRotation(Vector3.forward, direction);
key is the last command that seems to have no problems with orientation of a rotation...hooraaay.