我正在使用SneakyInput游戏杆来移动我的精灵和游戏的TMX贴图。我将自动照相机移动添加到了我的应用中,因此英雄精灵始终可见。当我浏览地图时,操纵杆不在屏幕上(它保持在原始位置)。我做了一个HUD,以便操纵杆始终位于同一位置,并且不会随地图一起移动。游戏杆可以在屏幕上正常显示,但是当我拖动它时不会移动我的英雄。

我已经在GameLayer中将HUDLayer设置为CCLayer,这就是我制作moveHero方法的地方。该操纵杆可以工作,但是当我在地图上移动该操纵杆时,自动摄像头移动有效,但是操纵杆保持在同一位置,并且很快就会消失。我知道问题是我要做[self setCenter....blah blah blah];而不是仅将Level1设置为中心。如何仅将相机移动到Level1而不移动HUDLayer

最佳答案

Here是我找到有关如何使用此类的链接。似乎很简单。我认为您想将方法- (void)moveHero更改为:

- (void)moveHero; {
  [self applyJoystick:leftJoystick toNode:hero forTimeDelta:1.0/60.0f]];
}


初始化HUD时似乎已经保留了对左操纵杆的引用。

好的,如果要基于这两个点(操纵杆和其他项)将HUD层居中,则只需将它们布置在2D网格中,然后从中找出中心点。我假设您正在横向模式下使用iPhone屏幕。则尺寸为480x320。该屏幕的中心是(240,160),因此,我将此中心用于操纵杆和其他HUD项。因此,我可能会将操纵杆设置为(10,10),将其他项目设置为((470-x),10)(假设该项目的尺寸为(x,y)),这两个项目都将他们周围有10像素的边界。

希望对您有所帮助!

关于iphone - 平视输入操纵杆的HUD层(cocos2d iPhone),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7312856/

10-15 03:01