private static void UpdateDestroyerVelocity(DestroyerAI ai, Transform transform, Rigidbody2D body) { body.velocity = transform.up * ai.speed; if (!Mathf.Approximately(ai.rotationSpeed, 0) && !Mathf.Approximately(transform.rotation.eulerAngles.z, ai.targetAngle)) { var euler = transform.rotation.eulerAngles.z; var newZ = (ai.rotationAngle > 0 ? Mathf.Min(ai.targetAngle, euler + ai.rotationAngle) : Mathf.Max(ai.targetAngle, euler + ai.rotationAngle)); transform.rotation = Quaternion.Euler(0f, 0f, newZ); } else { ai.rotationAngle = 0f; } }
private static void UpdateDestroyerPositioning(DestroyerAI ai, Transform transform, Transform player) { if (!Mathf.Approximately(ai.rotationAngle, 0)) { return; } var movingLeft = transform.rotation.z > 0f; if (movingLeft && player.position.x > transform.position.x) { ai.targetAngle = 270; ai.rotationAngle = ai.rotationSpeed; } else if (!movingLeft && player.position.x < transform.position.x) { ai.targetAngle = 90f; ai.rotationAngle = -ai.rotationSpeed; } }