CCTouchesBegan - CCTouchesEnded нужны обе координаты - PullRequest
2 голосов
/ 16 июля 2011

Прежде всего, я новичок в Cocos2D и Obj-C, поэтому я могу столкнуться с простыми проблемами, подобными этой. моя проблема выглядит так: на экране есть спрайт, и пользователь должен будет дотронуться до его верхней части и, пока он еще нажат, переместиться немного вверх, а затем отпустить касание. представьте себе спрайта игрока со шляпой, где вы должны дотронуться до шляпы и немного подвинуть палец вверх, чтобы его шляпа полетела в этом направлении. Каков наилучший способ реализовать это?

что я получил до сих пор это:

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

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];
        //other stuff
}

мне нужно создать другой метод для определения местоположения CCTouchesBegan, а затем передать эти значения методу CCTouchesEnded, где я затем вычислю угол и заставлю шляпу разлетаться? или я могу определить положение, где касание началось в самом методе выше?

Большое спасибо за любой ответ:)

Ответы [ 2 ]

1 голос
/ 20 июля 2011

Этот метод, который вы опубликовали, распространяется только после окончания касания. Это означает, что он будет срабатывать только тогда, когда пользователь убирает палец с экрана. Если это то, что вы хотите, то это нормально. Переменная CGPoint "location" - это ваша точка, которую вы хотите.

CGPoint - это два значения с плавающей запятой. У вас будет:

location.x
location.y

Это не скажет вам, где началось касание. Как я уже сказал, он срабатывает только тогда, когда пользователь убирает палец с экрана. Если вам нужно знать, где пользователь коснулся экрана, для этого есть другой способ. Вот стандартные методы прикосновений:

// Touch first detected
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
// Touches moved
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
// User took finger off screen
- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
// Touch was somehow interrupted
- (void)ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
0 голосов
/ 20 июля 2011
UITouch *touch = [ touches anyObject];

CGPoint new_location = [touch locationInView: [touch view]];
new_location = [[CCDirector sharedDirector] convertToGL:new_location];
NSLog(@"y: %1f", new_location.x);
NSLog(@"x: %1f", new_location.y);
...