Uso de Time.timeScale. Problemas al usarlo para una pausa. Explicación del funcionamiento. Módulos de Unity afectados por los cambios en la escala de tiempo.

Primer videotutorial que subo. Me es más cómodo explicarlo de esta manera, y quizás a ustedes les es más cómodo también para entender.

La idea es ver los problemas que puede traer trabajar con la escala del tiempo sin tener algunas consideraciones. Espero que se entienda y, como siempre, cualquier cosa PREGUNTEN!

Main.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Main : MonoBehaviour
{ 
    [Range(0, 1)]
    public float myTimeScale;

    //Se ejecuta al inicializar...
    void Start ()
    {
          
    }
  
    //Se llama al pintar la pantalla...
    void Update ()
    {
        //Afecta a todo lo que NO dependa del framerate.
        Time.timeScale = myTimeScale;
        print("Update");
    }

    private void FixedUpdate()
    {
        print("Fixed update");
    }
}

 

Character.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Character : MonoBehaviour
{
    public float speed;

    //Se ejecuta al inicializar...
    void Start ()
    {
      
    }
  
    //Se llama al pintar la pantalla...
    void Update ()
    {
        this.transform.position += Vector3.right * speed;
    }
}

 

CharacterWithTimeScale.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterWithTimeScale : MonoBehaviour
{
    public float speed;

    //Se ejecuta al inicializar...
    void Start ()
    {
      
    }
    
    //Se llama al pintar la pantalla...
    void Update ()
    {
        this.transform.position += Vector3.right * speed * Time.deltaTime;
    }
}

 

CharacterWithRigidbody.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharacterWithRigidbody : MonoBehaviour
{
    public float speed;

    //Se ejecuta al inicializar...
    void Start ()
    {
      
    }
  
    //Se llama al pintar la pantalla...
    void Update ()
    {
        this.GetComponent().velocity = Vector3.right * speed;
    }
}