में टकराव का पता लगाने मैं स्प्राइट किट के साथ एक साधारण खेल बनाने की कोशिश कर रहा हूं। मूल विचार यह है कि एक ऐसा खिलाड़ी है जो ब्लॉक से बचने के लिए कूद सकता है। लेकिन मुझे एक समस्या है, मुझे नहीं पता कि यह कैसे बनाया जाए जब खिलाड़ी ब्लॉक को हिट करता है तो खिलाड़ी गायब हो जाता है और रक्त एनीमेशन शुरू होता है। सबसे पहले मुझे समझ में नहीं आता कि यह कोड क्या करता है जिसे मैंने सेब वेबसाइट पर पाया है।स्प्राइट किट
static const uint32_t blockCategory = 0x1 <<0;
static const uint32_t playerCategory = 0x1 <<1;
की तुलना में मैं didBeginContact समारोह बोल रहा हूँ और एक NSLog डाल उस में ("कॉल समारोह किया")। लेकिन मुझे अपने डीबगर में आउटपुट कभी नहीं मिला।
यहाँ मेरी _player और _block कोड है: - (SKSpriteNode *) चरित्र {
_player = [SKSpriteNode spriteNodeWithImageNamed:@"soldier_run1"];
_player.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:_player.size.width /2 -5];
_player.physicsBody.dynamic = YES;
_player.physicsBody.usesPreciseCollisionDetection = YES;
_player.physicsBody.friction = 0;
_player.physicsBody.categoryBitMask = playerCategory;
_player.physicsBody.collisionBitMask = blokCategory;
_player.name = @"player";
SKAction *animAction = [SKAction animateWithTextures:playerTextures timePerFrame:0.1 resize:YES restore:YES];
मेरे _player कोड:
[_player runAction:[SKAction repeatActionForever:animAction]];
return _player;
}
-(SKSpriteNode *)block {
_blok = [[SKSpriteNode alloc] initWithColor:[SKColor blackColor] size:CGSizeMake(15, 40)];
//physics
_blok.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:_blok.size];
_blok.physicsBody.dynamic = NO;
_blok.name = @"block";
_blok.physicsBody.categoryBitMask = blokCategory;
_blok.physicsBody.collisionBitMask = playerCategory;
SKAction *moveBlock = [SKAction sequence:@[
[SKAction moveToX:-20 duration:2] ]];
[_blok runAction:moveBlock ];
return _blok;
}
इसके अलावा मैं सच में समझ में नहीं आता क्या categoryBitMask और collisionBitMask कर। मेरे पास यह काम करने के बाद मैं स्क्रीन से स्क्रीन गायब हो जाना चाहता हूं और रक्त एनीमेशन शुरू करना चाहता हूं, लेकिन मुझे नहीं पता कि यह कैसे होने दें। मुझे लगता है कि आपको कुछ ऐसा करना है: यदि (_player & & _block didcollide) { } लेकिन मुझे नहीं पता कि यह वास्तव में कैसे करें।
यह उत्तर देखें http://stackoverflow.com/questions/22495285/sprite-kit-collision-detection – Jeff