无限道路更新

时间:2015-03-30 22:00:02

标签: c# unity3d unityscript

我在Unity工作了一个月。在Unity和其他游戏引擎之前,我是Unity和C#的新手。无论我在无限运行游戏上做什么,我都会写随机道路发生器。道路发电机运行良好,但我有更新道路的问题。我可以像这样手动更新道路。如何自动更新?

void Update()
{
     if(Input.GetKeyDown(KeyCode.A)) UpdateRoad();
}

我的UpdateRoad方法添加这样的道路(我正在使用对象池)。 我想在Link Road,OnExitTrigger之后更新或者我不知道的事情。我该怎么办?

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要实现对象池。

我建议您首先设计对象,以便进行测试。或者如果不使用,将Unity3D的库存块原始作为您的预制件。我希望你已经知道预制件。这是制造无限跑步者的关键。实际上是制作各种游戏的主要核心。

Prefabs是一个对象文件,您可以在一个位置实例化它。因此,假设您将生成Flat walkable,然后生成Pit。您可能希望将它们堆叠在一起。

现在生成它们很容易。你不想参加更新吗?方法,因为很可能你不会更新,但你将根据你的游戏逻辑进一步叠加正在发生的事情。

为了进一步理解这一点,Unity3D已经制作了一个项目或完全详细的教程。它可以在2D中制作但是它会是相同的,如果你要将Collider2D改为Collider< - 这在你的情况下很重要。

https://unity3d.com/learn/tutorials/modules/beginner/live-training-archive/infinite-runner

<强>更新

您需要创建一个不可见的Object。意思是触发器。 然后在Trigger上调用你的方法UpdateRoad();

https://unity3d.com/learn/tutorials/modules/beginner/physics/colliders-as-triggers

有关触发器的详细视频。

答案 1 :(得分:0)

如果我正确理解了您的需求,则可以创建名为SpawnPoint的空对象,根据需要(在摄像机视图之外)设置Spawn Point的位置,然后实例化道路的随机预制件。关于TriggerExit-可用于销毁“旧路”。但是要使其正常工作,请不要忘记为您的对象设置对撞机和刚体。不要添加collider2D或Rigitbody2d,添加并使用Box Collider和Rigitbody组件