мультитач .. нужна помощь с cctouchesended - PullRequest
0 голосов
/ 23 апреля 2011

Я почти закончил с моим мультитач-кодом для моей игры, но я застрял с еще одной проблемой.Это сделано в Cocos2d: :)

У игрока есть dpad на левой стороне и кнопка справа, это работает нормально, если я удерживаю dpads и удерживаю кнопку прыжка, чтобы онбежит направо и прыгает.

Проблема в том, что когда я убираю палец с кнопки прыжка, все действия прекращаются, поэтому мне приходится поднимать и снова нажимать палец на dpad ...

это мой код дляcctouchesended

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {

////when the user has stopped touching the screen set the variables 
     ////back to false to stop its movement////

//self.myTouch = nil;
for (UITouch *touch in touches)
{
    if (moveRight == TRUE) {
    [player stopAction:RunForward];

    }
    if (moveLeft == TRUE) {
    [player stopAction:RunBackwards];

    }
    moveLeft = FALSE;
    moveRight = FALSE;
 //  jump = FALSE;
}



}

Ответы [ 2 ]

0 голосов
/ 12 февраля 2013

Вы захотите сохранить ссылку на HASH (touch.hash) и сохранить этот CCTouchesBegan

, а затем в функции, которую вы сейчас (выпуск) проверяете, какой хэш был освобожден.

so:

  1. в функции ccTouchesBegan вы проверяете, какая кнопка нажата:

    if (CCRectContainsPoint (sprite1.boundingbox, touchlocation)) {rightSideButtonHash = touch.hash;)

в выпуске вы проверяете touch.hash на rightSideButtonHash, и вы знаете, было ли это касание!

0 голосов
/ 03 мая 2011

Лучше вместо этого сопоставить логику с 2 кнопками.Или, по крайней мере, для прыжков.Проблема с текущим кодом состоит в том, что вы не проверяете, какой палец вы поднимаете.Вы можете объявить проверку, так что если касание, которое закончилось, находится на левой стороне экрана, то перестаньте двигаться.

Также вам не нужно сравнивать значение BOOL с TRUE.Просто сделайте «if (moveRight)».Это намного лучше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...