2015-04-09 5 views
-1

Я начинаю с Swift и SpriteKit, и я работаю над базовой игрой. Я создал персонаж Sprite (Sapceman), используя 2 изображения SKTexture. Когда экран коснется, изображение спрайта изменяется от одного изображения текстуры к другому (Jet Pack Fires), а Sprite перемещается по экрану. Я хочу настроить обнаружение столкновения (с Alien Spite), которое удаляет их с экрана, но только при касании экрана и отображении второго текстурного изображения и только для нижней части спрайта (т.е. когда человек касается экрана и JetPack уволен. Я хочу, чтобы часть огня «убила» инопланетянина). Цените, если кто-нибудь могут предложить какие-либо предложения по этимSpritekit - подход к столкновению при начале касания

+0

Так в основном вы хотите получить уведомление, когда огненный шар попадает в инопланетян. Правильно ? –

+0

Хорошо, да, в настоящее время огненный шар - это просто часть изображения спрайта (второе изображение текстуры). Я думал, что мне может понадобиться создать новый Sprite, который будет отображаться при нажатии кнопки «Начать» и прикрепить его к существующему «Sprite» и установить столкновение на этом, но не уверен, что это возможно. – JMD

ответ

0

Попробуйте этот код

static const uint32_t fireBallCategory = 0x1;  
static const uint32_t alienCategory = 0x1 << 1; 

В добавлении огненного шара и чужеродного метода добавления этого

fireBall.physicsBody.categoryBitMask = fireBallCategory;   
    alien.physicsBody.categoryBitMask = alienCategory; 
    fireBall.physicsBody.contactTestBitMask = alienCategory; 

Делая это, вы получите уведомление, когда огненный шар и инопланетяне встречаются друг с другом. Поэтому после этого вам нужно добавить логику, чтобы скрыть чужой метод делегата. Итак, сначала установите себя как контактный делегат. Добавьте эту строку в метод (- id) initWithSize: (CGSize).

self.physicsWorld.contactDelegate = self; 

Реализовать контакта делегата следующим образом,

-(void)didBeginContact:(SKPhysicsContact *)contact 
{ 
    SKPhysicsBody *notFireBall; 

    if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask){ 
    notFireBall = contact.bodyB; 
} else { 
    notFireBall = contact.bodyA; 
} 
[notFireBall removeFromParent];  
} 
+0

. Я попробую это, спасибо за помощь. – JMD

+0

. Работа ??? –

+0

Привет, Да, у меня есть контакт, и Alien удаляется, когда контакт сделан. Я думаю, что я пытался сделать это слишком сложным, только обнаружив столкновение, когда определенная текстура изображения была отображена, поэтому я решил изменить подход и вместо этого выстрелить снарядом (огненный шар) из Spaceman и установить столкновение здесь, которое достигнет того, что Я хочу. Спасибо за помощь – JMD

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