【发布时间】:2017-09-06 14:19:05
【问题描述】:
我在 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);
}
}
结束触发器:
public class EndTrigger : MonoBehaviour {
public GameManager gameManager;
void OnTriggerEnter ()
{
gameManager.CompleteLevel();
}
}
关卡完成:
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);
}
}
我写过其他脚本。如果你想要什么,请告诉我。谢谢大家。
【问题讨论】:
-
添加一个带有你想要的粒子效果的空游戏对象。将此空的游戏对象添加到场景中的岩石中。确保您首先禁用了它们。当发生碰撞时,启用它们。之后加载您的学分场景。您可以为此使用协程。
-
碰撞发生时如何激活它们?
-
您可以从谷歌搜索开始。 “如何启用游戏对象统一”就像这样。 Here 来自 Unity。
-
我找不到任何东西。我尝试了太多不同的东西,什么都没有......
-
你能在没有任何前置条件的情况下通过代码启用/禁用任何游戏对象吗?
标签: c# unity3d project collision particle-system