2013-10-05 1 views
0

У меня есть некоторые узлы физического тела. Sprite Kit немедленно вызывает метод didbegincontact. Я хочу, чтобы этот метод вызывался, когда я освобождаю прикосновение, чтобы он мог выполнять действия при выпуске клика вместо вызова метода, немедленно вызывающего некоторые проблемы с настройкой действия для меня.Выполнение столкновения Физического тела SpriteKit/Контакт по касанию Конец

- (void)didBeginContact:(SKPhysicsContact *)contact 
{ NSLog(@"%hhd", _touching); 
    if(_touching == NO) 
    return; 
something here 
} 

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
_touching = YES; 
NSLog(@"%hhd", _touching); 

} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
_touching = NO; 
NSLog(@"%hhd", _touching); 
something here 
} 

ответ

1
  1. Устанавливают глобальные переменные, т.е.

    BOOL _touching; 
    
  2. При касании/выпуска (штрихи закончились и начались) вы установили, что вар в ДА/НЕТ;

  3. В didbegincontact, использовать что-то вроде

    if(_touching == YES) { 
        // what I want to happen when I am touching 
    } 
    else { 
        // i must not be touching so do this 
    } 
    

Вот основной набор вверх - однако я думаю, что его игра логика вот вопрос, может думать по-другому, чтобы решить вашу проблема

@interface XBLMyScene() 

@property (strong, nonatomic) SKNode *world; 
@property (strong, nonatomic) SKSpriteNode *ball; 
@property BOOL touching; 
@end 

@implementation XBLMyScene 

-(id)initWithSize:(CGSize)size {  
if (self = [super initWithSize:size]) { 

    self.world = [SKNode node]; 
    [self addChild:self.world]; 

    self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0]; 

    self.physicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:CGPointZero toPoint:CGPointMake(500, 0)]; 

    self.ball = [SKSpriteNode spriteNodeWithColor:[SKColor redColor] size:CGSizeMake(40, 40)]; 
    self.ball.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(40, 40)]; 
    self.ball.position = CGPointMake(200, 300); 
    [self.world addChild:self.ball]; 

    self.touching = NO; 

} 
return self; 
} 

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    self.touching = YES; 
} 

-(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    self.touching = NO; 
} 

- (void) didSimulatePhysics 
{ 
if (self.touching) { 
    NSLog(@"I am touching"); 
} 
else { 
    NSLog(@"I am not touching"); 
} 
} 
+0

Спасибо за ответ. Но вот разъяснение заявления «В следующий раз опубликуйте свой код/​​идеи о том, что вы пробовали». Что я должен делать, если я начинаю или застрял в том, что делать? Как я могу опубликовать идеи, если я не знаю, как это сделать. Я думаю, если бы у меня были идеи, я бы не поставил здесь вопрос о помощи. В любом случае. Большое спасибо за помощь. – Programmer

+0

Решение не работает. Если я настроил его на «да», didbegincontatc не вызывается после касания. – Programmer

+0

Я пробовал точно так же, как вы говорите. Также используется инструкция NSLOG, чтобы узнать, меняет ли она значения, но не вызывает didbegincontact после касания конца – Programmer

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

  • Нет связанных вопросов^_^