Анимация спрайта после прикосновения? - PullRequest
0 голосов
/ 15 февраля 2012

В игре, которую я делаю, используя Cocos2d, у меня есть спрайт внизу экрана, который остается неподвижным.При касании экрана я бы хотел, чтобы спрайт переместился туда, где касался экран, а затем анимировал серию кадров, а затем переместился в исходное положение.Я знаю, что мне нужно будет использовать CCSequence, но я пока не знаю, как заставить его перейти к месту касания.В данный момент я искал вокруг и использую этот код:

-(void) TouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *Touch = [touches anyObject];
CGPoint location = [Touch locationInView:[Touch view]];
[swat runAction:[CCMoveTo actionWithDuration:3 position:location]];}

Я не получаю ошибок, но спрайт не отвечает.Есть идеи?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2012

Во-первых, у вас есть опечатка в имени метода. Это "ccTouchesBegan", а не "TouchesBegan".

-(void)ccTouchesBegan:(NSSet*)touches withEvent:(UIEvent*)event

Во-вторых, ваш спрайт не переместится туда, где вы ожидаете. locationInView возвращает точку в координатах UIKit, а CCMoveTo использует координаты OpenGL. Вам необходимо преобразовать точку в координаты OpenGL:

UITouch *touch = [touches anyObject];<br> CGPoint location = [touch locationInView:[touch view]];<br> location = [[CCDirector sharedDirector] convertToGL:location];

1 голос
/ 15 февраля 2012

Использование

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
0 голосов
/ 04 июня 2012

Сначала убедитесь, что вы зарегистрировали TouchDispatcher:

(void) registerWithTouchDispatcher
{
    [[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}

Затем введите:

(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event method

и также подтвердите, что у вас есть:

self.isTouchEnabled = YES;

строкакода в методе init().

...