예제 #1
0
        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;
            }
        }
예제 #2
0
        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;
            }
        }