暂停Unity游戏没有" Time.timeScale = 0"

时间:2014-09-04 08:24:32

标签: c# unity3d 2d-games unity3d-2dtools

我正试图在不使用“Time.timeScale = 0;”的情况下找到一种在Unity中暂停游戏的方法。我想改变这个的原因是我希望在游戏暂停时让角色扮演动画。有没有办法改变这个脚本,以便在玩家点击空间后,重力和前进速度只会“设置”?或者有更好的方法来解决问题吗?

这是剧本:

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;
    }
}

1 个答案:

答案 0 :(得分:0)

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

不确定传统动画是否可以使用。