【问题标题】:HUD layer for Sneaky Input Joystick (cocos2d iPhone)Sneaky Input Joystick (cocos2d iPhone) 的 HUD 层
【发布时间】:2011-11-10 21:19:33
【问题描述】:

我正在使用 SneakyInput 操纵杆来移动我的精灵,并为我的游戏使用 TMX 地图。我在我的应用程序中添加了自动相机移动,所以英雄精灵总是可见的。当我浏览我的地图时,操纵杆离开屏幕(它停留在原来的位置)。我制作了一个 HUD,使操纵杆始终处于同一位置,并且不会随地图移动。操纵杆很好地显示在屏幕上,但是当我拖动它时,它不会移动我的英雄。

我在 GameLayer 中将 HUDLayer 设为 CCLayer,这就是我创建 moveHero 方法的地方。操纵杆工作,但是当我在地图上移动它时,自动相机移动工作,但操纵杆保持在相同的位置,很快就看不见了。我知道问题是我做[self setCenter....blah blah blah]; 而不是只将Level1 设置为中心。如何只为Level1 而不是HUDLayer 移动相机?

【问题讨论】:

    标签: iphone cocos2d-iphone joystick hud


    【解决方案1】:

    Here 是我找到的有关如何使用此类的链接。这似乎相当直截了当。我想你想把- (void)moveHero的方法改成:

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

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

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

    希望有帮助!

    【讨论】:

    • 如果我取出 getChildByTag 行,我会收到未声明的错误。 moveHero 的两个括号和分号是错字吗?
    • 不,不是。分号只是更容易将方法复制到 .h 文件中。当您在上面设置leftJoystick = [leftJoy.joystick retain]; 时,您的.h 文件中是否声明了leftJoystick
    • 这很简单。您需要做的就是改变相机的工作方式。我假设您正在使用矩阵来移动相机。正确渲染地图后,将矩阵弹出回单位矩阵,然后 THEN 渲染您的 hud 图层。
    • 我不知道你对矩阵的意思是什么...我正在使用 TMX 地图,以及一种将图块移动到屏幕中心的简单方法。我把上面的代码贴出来了。
    • 看你的代码,你所要做的就是在渲染地图的时候使用兔子的位置,然后将相机设置到hud的位置并渲染hud的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    相关资源
    最近更新 更多