2015-03-30 23 views
0

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

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

我的UpdateRoad方法添加像这样的道路(我正在使用对象池)。 我想更新链接道路,OnExitTrigger或我不知道的东西。我该怎么做?

enter image description here

+0

这是2D还是3D? – Aizen 2015-03-30 22:14:08

+0

3D我正在使用z位置 – 2015-03-30 22:14:43

+0

我对统一性一无所知,但它听起来像是一个很好的事件订阅候选人。如果在用户出行时触发了某些事件,则可以在那里调用UpdateRoad()(可能基于其他一些状态变量)。 – 2015-03-30 22:31:35

回答

1

您需要实现对象池。

我会建议先让你的对象设计,让你可以测试。或者,如果不使用,Unity3D的库存块原始库为您的预制件。我希望你已经知道预制件。这是制造无限跑步者的关键。其实是制作任何类型游戏的主要核心。

预制是一个对象文件,你可以在一个位置实例化它。因此,让我们说你会生成一个平坦的步行,然后生成一个坑。你可能想将它们堆叠在一起。

现在生成它们很容易。你不想进入更新?方法,因为很可能你不会更新,但你会根据你的游戏逻辑进一步堆叠未来。

为了进一步理解这一点,Unity3D已经制作了一个项目或全面详细的教程。它可能是二维制造的,但它将会是一样的,如果你要把Collider2D改成碰撞器< - 这对你的情况很重要。

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

更新

您将需要创建一个对象,那是看不见的。意味着触发器。 然后在触发器上调用你的方法UpdateRoad();

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

有关触发的详细视频。

+0

我已经使用了对象池。我的代码运行良好,但我如何更新道路?我认为与OnTriggerExit,但我不知道这是最好的方式? – 2015-03-30 23:13:10

+0

对于我来回答你的问题。你想在道路上更新什么?它是组件还是替换对象本身?如果组件。你想更新哪些特定的组件,以便我可以添加它。 – Aizen 2015-03-30 23:16:46

+0

我想当玩家通过LinkRoad预制(您可以在我的文章中看到图片)UpdateRoad方法应该可以工作一次。例如,如果(player.position.z> linkprefab.position.z)UpdateRoad(); – 2015-03-30 23:31:51