2011-05-29 187 views
3

我正在开发一款使用cocos2d并需要虚拟游戏杆的iPad游戏。我有一个使用SneakyJoystick的原型。如何在cocos2d环境之外为cocos2d游戏实现虚拟游戏杆?

但是,我意识到我的游戏设计需要我使用CCTransitions在CCScene的不同实例之间移动用户,以获得我想要的视觉效果。问题是,我不希望用户控件(如操纵杆)受到CCTransitions的影响 - 我希望它们保持在屏幕上(在屏幕的不同部分,而不是由CCScene占用的部分)。

我意识到要做到这一点的唯一方法是让整个cocos2d环境保持在占用面积小于整个屏幕的EAGLView环境中,这使得我可以将所有用户控件保留在屏幕上的其他地方,它们不受场景转换。

问题是,这意味着SneakyJoystick可能不再是一个选项,因为它是一个CCNode因此可能只会在cocos2d场景图中运行。

我很好奇,如果任何人有这种情况的替代解决方案:一种在cocos2d环境之外实现虚拟游戏杆的方式,但它可以以某种方式流畅地与cocos2d场景进行通信。

如果我可以保留SneakyJoystick的功能或非常类似的功能,通过从此非cocos2d类中敲入cocos2d的预定更新,或以某种方式将用户输入信息从操纵杆类推送到cocos2d 。

+1

我现在正面临着这个挑战。您可以尝试交换图层而不是场景,然后您不必担心它。或者,您可以使用UIKit控件实现自己的游戏杆。就类之间的信息共享而言,你可以使用'NSNotifications'和'defaultNotificationCenter'。只需将游标数据作为'userInfo'传递即可。 – Moshe 2011-05-29 07:26:11

+0

从我所阅读的内容来看,似乎CCTransitions只能应用于整个CCScenes而不应用于单个CCLayers ......如果这不再是可能的话。 – todd412 2011-05-29 07:40:58

+0

我不认为可以将转换应用于图层。但是,根据您的游戏,这可能不是必需的。 – Moshe 2011-05-29 07:52:49

回答

1

可能你可以创建一个UIView并将其放在opengl视图上。访问openglView使用[CCDirector sharedDirector].openGLView。使用UIView创建您的游戏杆。所以它会一直显示,并且不会受到CCScene转换的影响。

+0

谢谢,这基本上是我做的,它工作得很好。 – todd412 2011-06-03 05:11:22