繁体   English   中英

在没有“ Time.timeScale = 0”的情况下暂停Unity游戏

[英]Pausing Unity game without “Time.timeScale = 0”

我试图找到一种在不使用“ Time.timeScale = 0;”的情况下暂停我的游戏的方法。 我要更改此设置的原因是我想让角色在游戏暂停时播放动画。 有没有一种方法可以更改此脚本,以使重力和前进速度仅在玩家单击空间后才“设置”? 还是有解决该问题的更好方法?

这是脚本:

public class PlayerMove : MonoBehaviour {

    Vector3 velocity = Vector3.zero;
    public Vector3 gravity;
    public Vector3 FlyVelocity;
    public float maxSpeed = 5f;
    public float forwardSpeed = 1f; 

    bool didFly = false;
    bool dead = false;
    float deathCooldown;
    Animator animator;

    // Use this for initialization
    void Start () {
        animator = GetComponentInChildren<Animator>();
    }

    // Do Graphic & Input updates here
    void Update(){
        if (dead) {
            deathCooldown -= Time.deltaTime;

            if (deathCooldown <= 0) {
                if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0) ) {
                Application.LoadLevel( Application.loadedLevel );
                    }
                }
            }
        if (Input.GetKeyDown(KeyCode.Space) || Input.GetMouseButtonDown(0) ) {
            didFly = true;
            animator.SetTrigger ("DoFly");
        }
    }

    void OnCollisionEnter2D(Collision2D collision) {
        animator.SetTrigger ("Death");
        dead = true;
    }

    // Do physics engine updates here
    void FixedUpdate () {
        if (dead)
            return;

        velocity += gravity * Time.deltaTime;
        velocity.x = forwardSpeed;

        if(didFly == true) {
            didFly = false;
            velocity += FlyVelocity;
        }

        velocity = Vector3.ClampMagnitude(velocity, maxSpeed);

        transform.position += velocity * Time.deltaTime;

        deathCooldown = 0.5f;
    }
}

如果使用的是Mechanim,则即使实际时间标度为零,也可以使用Animator.Update从脚本更新动画状态。

不确定传统动画是否可以实现技巧。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM