- Home /
Inheritance code acts differently (Quaternion.LookRotation)
I have a projectile control script where i define general projectile behaviors. I then subclassed this script, and added custom specific behaviors for projectiles.
I declared the parent projectile script's awake, start, and update methods virtual and appended the name with Parent such as "public virtual void ParentAwake()"
Before i did this, my missile generic behaviors worked fine (rotating to track target). Now when I called the ParentUpdate() method the code seems to be skipped. I put a Debug.Log() right before it, and I see that code execute. But the rotation code doesn't do anything.
Here is my code: Parent:
public virtual void ParentUpdate()
{
if(!targetTransform.Equals(null) )
{
Debug.Log("facing target: " + targetTransform.name);
Quaternion lookAt = Quaternion.LookRotation(targetTransform.position - projTransform.position);
//transform.rotation = Quaternion.Lerp(transform.rotation, lookAt, Time.smoothDeltaTime * ProjTurnRadiusDegreesPerSec);
projTransform.rotation = Quaternion.Lerp(projTransform.rotation, lookAt, (1.0f / ProjTurnRadiusDegreesPerSec) * Time.deltaTime);
}
velVector = (projTransform.position - lastPos);
targetDirVector = targetTransform.position - projTransform.position;
angleToTarg = Vector3.Angle((velVector*Time.deltaTime),targetDirVector);
//if ((Vector3.Distance(targetLocation,transform.position) <= 15.0f) && (ActualProjThrust == ProjThrust)) // eventually figure out outer ring of circle it travels around target and then use that based on turn speed
if ((angleToTarg > 70 && angleToTarg < 110) && (ActualProjThrust == ProjThrust)) // eventually figure out outer ring of circle it travels around target and then use that based on turn speed
{
ActualProjThrust = ActualProjThrust * 0.7f; // reduce speed by 30%
}
else
{
ActualProjThrust = ProjThrust;
}
projTransform.Translate(Vector3.forward * ActualProjThrust * Time.deltaTime);
lastPos = projTransform.position;
}
Child:
void Update()
{
base.ParentUpdate();
}
The debug statements print, but my code doesn't seem to track my target. My missile just moves forward. The target object and such are assigned and visible in inspector at runtime.
Why would this happen?
Your answer
Follow this Question
Related Questions
An OS design issue: File types associated with their appropriate programs 1 Answer
Multiple Cars not working 1 Answer
Rotating a model with increments 1 Answer
Object won't rotate correctly 2 Answers
Tilt object x degrees, smoothly 0 Answers