2013-10-12 23 views
0

Я только начал использовать SpriteKit, и я открываю API. У меня есть объект для перемещения по экрану при нажатии и удерживании кнопки. поэтому я установил NSTimer, пока пользователь все еще удерживает и продолжает называть один и тот же метод для перемещения объекта каждые 0,1 секунды. объект движется, но, двигаясь в какой-то момент, он, как и горизонтальный переход, не имеет горизонтального перехода. поэтому я использовал NSLog, чтобы посмотреть на позицию объектов, и я выпустил, что он вычитает 10 очков, а не 0,5. вот код:точность вычитания из поплавка

SKAction *moveLeft = [SKAction moveToX:((CGFloat)[[self childNodeWithName:@"Hero"] frame].origin.x)-0.5 duration:0.1]; 
[[self childNodeWithName:@"Hero"] runAction:moveLeft]; 

Как я могу это исправить? кроме того, я понял в консоли, что координата подобна 150.000000, а не 150 или 150.0. Может ли это быть проблема?

Другой вопрос для тех, кто работал с SpriteKit раньше! в игровой сцене, и вы хотите добавить кнопку, которую вы добавите в класс сцены или в контроллер вида?

+1

Один вопрос за сообщение. – uchuugaka

+0

Что произойдет, если вы переместите ваш - 0.5 внутри скобки? Также убедитесь, что у вас есть пробел после минуса, чтобы не использовать унарный - – uchuugaka

ответ

0

я нашел решение, я использую это прямо сейчас:

SKAction *moveLeft = [SKAction moveByX:1 y:0 duration:0]; 

это дает более точные результаты.

+1

То, что вы делаете, эквивалентно изменению положения x. 'hero.position = CGPointMake (hero.position.x + 1, hero.position.y);' эквивалент без необходимости SKAction. – prototypical

0

Звучит так, как будто вы смешиваете подростки, устанавливая новую перед старой отделкой. Возможно также, что вы создаете таймеры и не убиваете их? Не уверен, не видя реализации.

Один из способов решения проблемы - установить SKAction в нужном направлении при наступлении касания, а затем удалить действие при окончании касания. Таким образом, у вас будет только один SKAction, работающий одновременно.

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

Смежные вопросы