protected override void OnShow(object userData) { base.OnShow(userData); enemy = entityDataProjectile.EntityTargetable; Vector3 startingPoint = entityDataProjectile.FiringPoint.position; Vector3 targetPoint = Ballistics.CalculateLinearLeadingTargetPoint( startingPoint, enemy.transform.position, enemy.Velocity, startSpeed, acceleration); Vector3 direction = entityDataProjectile.FiringPoint.forward; Vector3 binormal = Vector3.Cross(direction, Vector3.up); Quaternion rotation = Quaternion.AngleAxis(fireVectorXRotationAdjustment, binormal); Vector3 adjustedFireVector = rotation * direction; FireInDirection(startingPoint, adjustedFireVector); }
protected Vector3 GetHeading() { if (enemy == null) { return(Vector3.zero); } Vector3 heading; if (leadTarget) { heading = Ballistics.CalculateLinearLeadingTargetPoint(transform.position, enemy.transform.position, m_TargetVelocity, m_Rigidbody.velocity.magnitude, acceleration, leadingPrecision) - transform.position; } else { heading = enemy.transform.position - transform.position; } return(heading.normalized); }