2012-02-15 4 views
0

В игре, которую я делаю, используя 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

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

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

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

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

+0

Я пробовал это, и спрайт все еще не двигается. Нужно ли мне импортировать какие-либо файлы или что-то в этом роде? каково было бы заставить его перемещаться с помощью OpenGL напрямую, так как не нужно преобразовывать ToGL? – akuritsu

+0

В противном случае это может быть проблема со слоями? – akuritsu

+1

Вы включили касания для этого слоя? Добавить self.isTouchEnabled = YES; для метода инициализации слоя. – Kreiri

1

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

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

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

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

Затем осуществить:

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

, а также убедиться в наличии:

self.isTouchEnabled = YES; 

строка кода init() способ.