Оптимизация кода C#, Unity
Как можно оптимизировать и/или сократить этот код?
Скрипт подключён к префабу. Суть в том, что при определённом отдалении от игрока (distToPlayer > distToTeleport), объект телепортируется в точку одной из четвертей окружности с радиусом distToTeleport - 5 в зависимости от положения объекта относительно игрока (по сути просто перемещается в другой угол).
private void Move()
{
float distToPlayer = Vector2.Distance(transform.position, Player.position);
if (distToPlayer > distToStop)
{
if (distToPlayer < distToTeleport)
{
rb.AddRelativeForce(Vector3.up * speed * Time.deltaTime, ForceMode2D.Impulse);
}
else
{
if (Player.position.x > transform.position.x)
{
if (Player.position.y > transform.position.y)
{
spawnPoint.x = Random.Range(0, distToTeleport - 5);
spawnPoint.y = Mathf.Sqrt(Mathf.Pow(distToTeleport - 5, 2) - Mathf.Pow(spawnPoint.x, 2));
transform.position = Player.position + spawnPoint;
}
else
{
spawnPoint.x = Random.Range(0, distToTeleport - 5);
spawnPoint.y = - Mathf.Sqrt(Mathf.Pow(distToTeleport - 5, 2) - Mathf.Pow(spawnPoint.x, 2));
transform.position = Player.position + spawnPoint;
}
}
else
{
if (Player.position.y > transform.position.y)
{
spawnPoint.x = - Random.Range(0, distToTeleport - 5);
spawnPoint.y = Mathf.Sqrt(Mathf.Pow(distToTeleport - 5, 2) - Mathf.Pow(spawnPoint.x, 2));
transform.position = Player.position + spawnPoint;
}
else
{
spawnPoint.x = - Random.Range(0, distToTeleport - 5);
spawnPoint.y = - Mathf.Sqrt(Mathf.Pow(distToTeleport - 5, 2) - Mathf.Pow(spawnPoint.x, 2));
transform.position = Player.position + spawnPoint;
}
}
}
}
}
Источник: Stack Overflow на русском