当障碍物被击中时,如何停止游戏

本文关键字:何停止 游戏 障碍物 | 更新日期: 2024-08-10 00:08:56

我正在开发一款团结的游戏,因为我可以运行游戏,但当游戏遇到障碍时,游戏不会停止。我用了一种方法来停止游戏,但没有奏效。

我的脚本是

Player.cs

public class Player : MonoBehaviour{
    // The force which is added when the player jumps
    // This can be changed in the Inspector window
    public Vector2 jumpForce = new Vector2(0, 300);
    public Rigidbody2D myRigidbody2D;
    void Start()
    {
        this.myRigidbody2D = this.GetComponent<Rigidbody2D>();
    }
    // Update is called once per frame
    void Update ()
    {
        if (Input.GetKeyUp("space"))
        {
            this.myRigidbody2D.velocity = Vector2.zero;
            this.myRigidbody2D.AddForce(jumpForce);
        }
        Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
        if (screenPosition.y > Screen.height || screenPosition.y < 0)
        {
            Die();
        }
    }
    public void Die()
    {   
        if (Input.GetKeyUp ("r")) 
            {
                Application.LoadLevel (Application.loadedLevel);
            }
    }
}

生成.cs

using UnityEngine;
public class Generate : MonoBehaviour 
    {
    public GameObject Pencils;
    int score = 0;
    public Player p;
    void Start()
    {
        InvokeRepeating("CreateObstacle", 2.8f, 2.5f);
    }
    void OnGUI () 
    {
        GUI.color = Color.black;
        GUILayout.Label(" Score: " + score.ToString());
    }
    public void CreateObstacle()
    {
        Instantiate(Pencils);
        {
            score++;
        }
        //Player player = Pencils.GetComponent<Player> ();
        //player.Die();
    }
    public void destroy()
    {
        p.Die ();
        //Generate.SetTrigger ("Die");
        //Die = true;
        //public bool isChecked = false;
        //public void Check(Die)
        p mygen=destroy.GetComponent<p>();
        if (mygen)
        {
            if (p.transform.tag == "Die")
                mygen.isChecked = true;
        }//else
        //  is Checked=false;
        {
            CancelInvoke("CreateObstacle");
        }
}
}

当障碍物被击中时,如何停止游戏

在列表中找不到您的"停止游戏"代码。如果"停止游戏"意味着暂停游戏或停止游戏中的时间流,那么time.timeScale之类的东西就可以了。

为了暂停游戏,你可以做Time.timeScale = 0f;,为了恢复游戏,你只需要做Time.timeScale = 1f;

如果你使用Unity的物理引擎,你可能还需要修改Time.fixedDeltaTime(这样你的物理就不会在游戏暂停时运行)。

我想从Generate.cs执行void destroy()方法,就像从Player.cs 执行Die()一样

如果你想在执行player.cs中的die()时从generate.cs调用destroy(),你只需要在die(。

您需要在player.cs中创建一个游戏对象,该对象将是您的generate.cs:的实例

public gameObject generateInstance;

然后,您需要在您的player.cs脚本的die方法中调用该generateInstance的destroy方法:

public void Die()
{   
    if (Input.GetKeyUp ("r")) 
        {
            generateInstance.destroy();
            Application.LoadLevel (Application.loadedLevel);
        }
}

不要忘记将generateInstance设置为Generate.cs,方法是将其拖动到Unity检查器中的Player.cs脚本上,或者直接通过代码获取。