Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    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);
    }