Слой HUD для Sneaky Input Joystick (iPhone для cocos2d) - PullRequest
3 голосов
/ 06 сентября 2011

Я использую джойстик SneakyInput для перемещения своего спрайта и карты TMX для своей игры.Я добавил авто-движение камеры в свое приложение, чтобы спрайт героя всегда был виден.Когда я прохожу карту, джойстик исчезает с экрана (он остается на своем первоначальном месте).Я сделал HUD таким образом, чтобы джойстик всегда находился в одном и том же положении и не двигался вместе с картой.Джойстик прекрасно отображается на экране, но когда я перетаскиваю его, он не двигает моего героя.

Я сделал HUDLayer CCLayer в GameLayer, где я делаю метод moveHero.Джойстик работает, но когда я перемещаю его по карте, работает автоматическое движение камеры, но джойстики остаются там же и довольно скоро остаются вне поля зрения.Я знаю, что проблема в том, что я делаю [self setCenter....blah blah blah]; вместо установки только Level1 в качестве центра.Как мне переместить камеру только на Level1, а не HUDLayer?

1 Ответ

1 голос
/ 09 сентября 2011

Здесь - ссылка, которую я нашел о том, как использовать этот класс.Это кажется довольно прямым.Я думаю, что вы хотите изменить метод - (void)moveHero на:

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

, так как кажется, что вы уже сохранили ссылку на левый джойстик, когда инициализировали HUD.

Хорошо, если вы хотите центрировать слой HUD на основе этих двух точек (джойстик и другой элемент), вам нужно только расположить их в 2D-сетке и определить центральную точку изтам.Я предполагаю, что вы работаете с экраном iPhone в ландшафтном режиме.Тогда размеры 480х320.Центр этого экрана (240, 160), поэтому я бы использовал этот центр для своего джойстика и другого элемента HUD.Поэтому я, вероятно, установил бы свой джойстик в (10, 10), а мой другой элемент (предположим, что размеры этого элемента равны (x, y)) в ((470 - x), 10), что дало бы элементам10 пикселей границы вокруг них.

Надеюсь, что поможет!

...