当障碍物被击中时,如何停止游戏
本文关键字:何停止 游戏 障碍物 | 更新日期: 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脚本上,或者直接通过代码获取。