2013-10-07 1 views
-2

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

Я в состоянии сделать все правильно и отлично работает. Но я не могу найти, как сделать верхние боковые фигуры статичными. Средний пользователь должен иметь возможность перетаскивать только нижние боковые формы в верхние боковые формы для соответствия, но не должен перетаскивать верхние боковые формы в соответствии с нижними боковыми формами. Я до сих пор искал в Руководстве по программированию SpriteKit от Apple, но в этом нет такой подсказки, которая помогает мне выполнить вышеупомянутую задачу.

Пожалуйста, помогите мне, если кто-нибудь сможет.

ответ

1

Простой способ установить это имя, когда вы их создаете. Использовать константу - любой простой способ, чтобы вы могли добавлять/проверять правильное имя.

static NSString * const kCanMoveMe = @"movable"; 
static NSString * const kCanNotMoveMe = @"not-movable"; 

// for example 
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:imageName]; 
sprite.name = kCanMoveMe 

SKSpriteNode *sprite2 = [SKSpriteNode spriteNodeWithImageNamed:imageName]; 
sprite.name = kCanNotMoveMe 

Затем, когда вы прикасаетесь, проверьте имя, а затем вы знаете, можете ли вы его переместить или нет.

+0

Решено. Спасибо – Programmer

+0

Хотя это будет работать, подкласс SKSpriteNode и добавление свойства 'isMoveable' BOOL, вероятно, лучший маршрут. Использование свойства 'name' является хаккой, так как теперь имя свойства больше не отражает его истинную функциональность. – prototypical

+0

@prototypical Я согласен, но Programmer хотел простое решение. Другим лучшим вариантом является использование пользовательских данных, а не имя. – DogCoffee

0

Вы также можете использовать свойство SKNode .userData для хранения данных пользовательского узла для фактического спрайта в вашей ситуации, если оно движется или нет, или любые другие данные, относящиеся к игре.

Больше информации здесь: Apple documentation about the userData property

0

Я предлагаю подклассов SKSpriteNode и добавления свойства isMoveable BOOL назначать, если он способен перемещаться.

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

Например, в Xcode вы бы набрали mySprite.i, а свойство isMoveable BOOL было бы доступно для завершения кода.