Hi, I am still very new to Unity. Currently I have a script to find the closest enemy in my game. I am using a game object to tag that to the closest enemy. I have a cinemachine virtual camera to target the group of the player and the game object of the closest enemy. I’m not sure how I can smooth the transition of the camera aim, when one enemy dies and it finds the next closest enemy. It seems to hop to the next target really quickly.
how can I slow down the hopping, by code or will be better by using cinemachine (if yes, how can I do this)?
void FindClosestEnemy()
{
float distanceToClosestEnemy = Mathf.Infinity;
float distanceToEnemy;
Enemy closestEnemy = null;
Enemy[] allEnemy = GameObject.FindObjectsOfType<Enemy>();
foreach (Enemy currentEnemy in allEnemy)
{
distanceToEnemy = (currentEnemy.transform.position - this.transform.position).sqrMagnitude;
if (distanceToEnemy < distanceToClosestEnemy)
{
distanceToClosestEnemy = distanceToEnemy;
closestEnemy = currentEnemy;
}
}
distanceToEnemy = (closestEnemy.transform.position - this.transform.position).sqrMagnitude;
if (distanceToEnemy > MaxPointDistance2Enemy)
{
Vector3 tmp = (closestEnemy.transform.position - transform.position);
Vector3 boundry = this.transform.position + 0.3f * tmp;
pointer.transform.position = boundry;
}
else
{
pointer.transform.position = closestEnemy.transform.position;
}
Debug.DrawLine(this.transform.position, closestEnemy.transform.position);
}