2014-05-18 146 views
0

我想設置此遊戲,以便當用戶點擊屏幕上的特定點時,它會從該位置分配SKSpriteNode。所以我設置的是這個觸摸裏面的方法開始:如何設置水龍頭的位置

for (UITouch *touch in touches) { 
    score = score + 1; 

    cat = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"cat.png"] size:CGSizeMake(35, 35)]; 
    cat.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)+120); 

    [self addChild:cat]; 
} 

哪些工作正常,並將節點添加到觸摸發生的任何地方。

我希望它只是當用戶觸摸特定位置加入,所以我嘗試設置此功能:

for (touch locationInNode:CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)) { 
    score = score + 1; 

    cat = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"cat.png"] size:CGSizeMake(35, 35)]; 
    cat.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)+120); 

    [self addChild:cat]; 
} 

但它沒有工作,告訴我,我需要一個括號對於一些原因。

如何設置它,使其只在用戶觸摸屏幕中間時纔會產生?

+0

locationInNode是一種方法。你需要在它周圍使用方括號。然而,這裏還有許多其他問題。你知道for循環是如何工作的嗎? – CrimsonChris

+0

並非完全,for循環是我從SpriteKit項目的模板中偷取的一段代碼(當用戶點擊它時會產生一個飛船)@CrimsonChris –

+0

我已經檢查過相同的示例項目。當我告訴你時,請相信我,如果這是你第一次看到for循環,你不會走得太遠。我建議閱讀初學者面向對象編程。 – CrimsonChris

回答

0

我認爲你可以使用

-(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
     UITouch* touch = [touches anyObject]; 
     CGPoint positionInScene = [touch locationInNode:self]; 
     // Add your logic to check the specific location 
     // if(CGPointEqualToPoint (positionInScene, yourSpecificPosition) 

     // Render Cat 


    } 

希望這將有助於

0

想通了:

for (UITouch *touch in touches) { 
     CGPoint location = [touch locationInNode:self]; 
     if (CGRectContainsPoint(crate.frame, location)) { 
      score = score + 1; 

    cat = [SKSpriteNode spriteNodeWithTexture:[SKTexture textureWithImageNamed:@"cat.png"] size:CGSizeMake(35, 35)]; 
    cat.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)+120); 

    [self addChild:cat]; 
     } 
    } 
相關問題