如何在目标C的基于区块的RPG中编写RPG游戏的脚本事件/剪切场景系统?

时间:2011-03-15 17:43:54

标签: objective-c cocos2d-iphone

对于背景,我一直在研究基于Ray Wenderlich教程的RPG。 (实施例)http://www.raywenderlich.com/1163/how-to-make-a-tile-based-game-with-cocos2d。

现在我正在尝试构建脚本事件/剪切场景系统,以便例如当玩家进入建筑物时,不同的角色可以在继续冒险之前讨论当前事件。我唯一的问题是我无法想象一下如何实现这一点。

我猜是某种一次性使用触发器,可能保存在某个单独的某个地方的大型switch语句中?哪个可能会吸引所有临时角色?然后该事件将自行停用。

我只是在寻找一个如何做到这一点的蓝图。虽然编程示例也很受欢迎。

2 个答案:

答案 0 :(得分:3)

这很大程度上取决于你想要投入系统的时间以及你想要最终系统的多样性。强大的切割场景系统可以足够灵活,几乎可以用于典型的2D RPG中的每个交互。

如果你想全力以赴,我建议采用大量数据驱动方式。在文件中保留尽可能多的数据,并使用文件系统。如果你说“所有对话框场景都在这个文件夹中”,那么在添加新场景时,只需将其放入文件夹而不是创建场景,然后在某处触摸某些主切换语句。请记住,您希望使用一个大型系统尽可能简单地添加新的过场动画,而不是400个不同的触摸位置。

我也会远离switch语句来跟踪过场动画的进度。它为每个场景增加了大量代码开销。无所事事,过场动画将是一个简单的数据阵列和位置。您的过场动画管理器(单件)可以解析数组,将数据解码为命令并将其关闭。

很抱歉,如果这是一个很大的模糊,但很多这些决定取决于您的引擎的结构以及您想要的系统。请记住,系统越一般,您可能会发现它的使用次数越多,但开始运行需要更长的时间。

答案 1 :(得分:1)

你可以在移动时检查你所在的瓷砖,当你在特定的瓷砖上你可以开始一个过场动画,你也可以通过TiledEditor添加一个标签(这是推荐使用CCTMXTiledMap的编辑器) )到你的地图指定过场动画应该从哪里开始,就像他指出该教程中的角色起点一样。你在每个游戏周期中检查指定的triger(特定的tile或者map中的点)。然后你几乎很容易冻结控制并播放预先录制的相机和物体移动,直到过场动画结束。将游戏恢复到正常模式并关闭检查游戏。