Unity3d 我如何绕过时间刻度

Unity3d 我如何绕过时间刻度,unity3d,2d,Unity3d,2d,我的播放器附带了一个脚本,其中包含IEnumerator OnTriggerExit2D。其中有一个time.time scale等于0,它使整个游戏在与标记对象碰撞后暂停。我将其设置为这样,以便我的播放器在碰撞后的特定时间停止(我使用了yield return new WaitForSeconds) 我的问题是,;有没有办法使我的播放器不受时间刻度的影响,但在发生碰撞后仍然停止,这样我的播放器在整个游戏暂停时仍然可以运行。这是我的剧本: public class Player : MonoB

我的播放器附带了一个脚本,其中包含
IEnumerator OnTriggerExit2D
。其中有一个
time.time scale
等于0,它使整个游戏在与标记对象碰撞后暂停。我将其设置为这样,以便我的播放器在碰撞后的特定时间停止(我使用了
yield return new WaitForSeconds

我的问题是,;有没有办法使我的播放器不受
时间刻度的影响,但在发生碰撞后仍然停止,这样我的播放器在整个游戏暂停时仍然可以运行。这是我的剧本:

 public class Player : MonoBehaviour {

    public float speed = 15f;
    private Vector3 target;
    public Player playerMovementRef;
    void Start () {
        target = transform.position;
    }

    void Update () {
        if (Input.GetMouseButtonDown(0)) {
            target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            target.z = transform.position.z;
        }
        transform.position = Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime);
    }  

    IEnumerator OnTriggerExit2D (Collider2D other){
        if (other.tag == "Bouncy object")
            playerMovementRef.enabled = false;
        yield return new WaitForSeconds (0.35f);
        Time.timeScale = 0f;
        playerMovementRef.enabled = true;
    }
}
案例1

您可以从更新中删除Time.deltaTime。 即使将时间刻度设置为0,仍会调用Update。只有Time.deltaTime将为0,因此您的玩家不会移动

您可以使用一些常量值,而不是使用Time.deltaTime移动播放器。 虽然它不会与帧速率无关,但您可以让您的播放器移动

案例2

您可以禁用(GetComponent().enabled=false)除您的玩家之外的所有其他游戏对象的所有刚体,而不是将Time.timescale设置为0