private void SpawnEnemy() { Vector3 position = GetEnemyRandomPosition(); float angle = GeomHelper.GetAngle(-position); Quaternion rotation = Quaternion.AngleAxis(angle, Vector3.forward); GameObject enemy = ScriptManager.GameObjectPool.GetEnemy(); enemy.transform.position = position; enemy.transform.rotation = rotation; enemy.transform.GetComponent <Rigidbody2D>().velocity = -position.normalized * ENEMY_SPEED * Random.Range(0.5f, 1f); }
private void PerformRotation() { targetAngle = GeomHelper.GetAngle(GetMousePos()); var delta = targetAngle - currentAngle; if (Mathf.Abs(delta) <= PRECISE_ROTATION_SPEED) { return; } rotationSpeed = Mathf.Abs(delta) <= RUDE_ROTATION_SPEED ? PRECISE_ROTATION_SPEED : RUDE_ROTATION_SPEED; if (delta > 0) { if (delta > 180) { currentAngle -= rotationSpeed; } else { currentAngle += rotationSpeed; } } else if (delta < 0) { if (delta < -180) { currentAngle += rotationSpeed; } else { currentAngle -= rotationSpeed; } } if (currentAngle > 360) { currentAngle = currentAngle - 360; } if (currentAngle < 0) { currentAngle = 360 + currentAngle; } gameObject.transform.rotation = Quaternion.AngleAxis(currentAngle, Vector3.forward); }