我在Unity制作了一个项目,一个明确的游戏。所以玩家有一辆科幻汽车,他试图避开障碍物。 当汽车撞到一块石头时,游戏管理器会加载"积分"屏幕在退出或重启之间进行选择。 我的问题是,当汽车继续运行时,我想让摇滚爆炸,然后游戏管理器将加载"积分"屏幕。
我的一些代码:
对于玩家碰撞:
public class PlayerCollision : MonoBehaviour {
public PlayerMovement movement;
public static bool y = true;
public void OnCollisionEnter (Collision collisionInfo)
{
// We check if the object we collided with has a tag called "Obstacle".
if (collisionInfo.collider.tag == "Obstacle")
{
movement.enabled = false; // Disable the players movement.
y = false;
FindObjectOfType<GameManager>().EndGame();
}
}
}
游戏经理:
public class GameManager : MonoBehaviour {
bool gameHasEnded = false;
public float restartDelay = 1f;
public GameObject completeLevelUI;
public void CompleteLevel ()
{
completeLevelUI.SetActive(true);
}
public void EndGame ()
{
if (gameHasEnded == false)
{
gameHasEnded = true;
Debug.Log("GAME OVER");
Invoke("Restart", restartDelay);
}
}
void Restart ()
{
SceneManager.LoadScene("Credits");
//SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
endTrigger:
public class EndTrigger : MonoBehaviour {
public GameManager gameManager;
void OnTriggerEnter ()
{
gameManager.CompleteLevel();
}
}
LevelComplete:
public class LevelComplete : MonoBehaviour {
public void LoadNextLevel ()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
菜单:
public class Menu : MonoBehaviour {
public void StartGame ()
{
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex + 1);
}
}
我写了其他脚本。如果你想要什么,请告诉我。谢谢你们。
答案 0 :(得分:0)
为您的岩石添加粒子系统。取消选中&#34;循环&#34;并且&#34;玩清醒&#34;。然后你可以通过添加下面的行来玩。
public void OnCollisionEnter (Collision collisionInfo)
{
// We check if the object we collided with has a tag called "Obstacle".
if (collisionInfo.collider.tag == "Obstacle")
{
movement.enabled = false; // Disable the players movement.
y = false;
collisionInfo.gameObject.GetComponent<ParticleSystem>().Play(); // play the explosion
FindObjectOfType<GameManager>().EndGame();
}
}
答案 1 :(得分:0)
我会改变你的做法。据我所知,你已经有了一个endTrigger [有一个Collider Trigger],如果玩家进去的话就会结束游戏。因此,取消选中玩家对撞机中的触发器,而不是将该触发器添加到岩石对撞机,因此当玩家崩溃时,它将:
您可以将此脚本添加到您的摇滚中,看看它是如何工作的
public class RockTrigger : MonoBehaviour {
public GameManager gameManager;
ParticleSystem myParticleSystem;
void Awake()
{
myParticleSystem = GetComponent<ParticleSystem>();
}
void OnTriggerEnter(Collider other)
{
myParticleSystem.Play();
GetComponent<MeshRenderer>.enabled = false;
gameManager.GetComponent<GameManager>().EndGame();
}
}
关于OnTriggerEnter 的注意事项:如果你只让玩家在场景中移动,这就好了(我使用你在EndGame中使用的相同模式),
但是如果有其他GameObject与RigidBody一起移动
场景你应该检查other
是否确实是玩家。通常标记播放器并检查if(other.tag == "Player")