SpriteKit Clicker Game为可点击的东西选择产卵区域?

时间:2014-04-26 19:15:28

标签: ios sprite-kit

我是SpriteKit的新手,并在SpriteKit中构建一个简单的CLickerGame。现在我有游戏结束但是应该产生点击它的东西,不时在屏幕外产生。我在哪里可以选择产生东西的arc4random区域?

@implementation MyScene

-(void)CreateTestObject 
{
    SKSpriteNode *TestObject = [SKSpriteNode spriteNodeWithImageNamed:@"TestObject"];

    int maxX = CGRectGetMaxX(self.frame);
    float ranX = (arc4random()%maxX) + 1;

    int maxY = CGRectGetMaxY(self.frame);
    float ranY = (arc4random()%maxY) + 1;

    TestObject.position = CGPointMake(ranX, ranY);
    TestObject = CGSizeMake(75, 75);
    TestObject = @"Object";

    [self addChild:TestObject];
}

-(id)initWithSize:(CGSize)size 
{
    if (self = [super initWithSize:size])
    {
        bg = [SKSpriteNode spriteNodeWithImageNamed:@"bg.png"];
        bg.position = CGPointMake(160, 284);
        bg.size = CGSizeMake(self.frame.size.width, self.frame.size.height);
        [self addChild:bg];

        [self CreateTestObject];
    }
return self;
}

-(void)selectNodeForTouch:(CGPoint)touchLocation
{
SKSpriteNode *touchedNode = (SKSpriteNode *)[self nodeAtPoint:touchLocation];

    if([[touchedNode name] isEqualToString:@"TestObject"])
    {
        SKSpriteNode *TestObject = (SKSpriteNode *)[self childNodeWithName:@"TestObject"];
        TestObject.name = @"DisabledTestObject";

        SKAction *grow = [SKAction scaleTo:1.2 duration:0.1];
        SKAction*shrink = [SKAction scaleTo:0 duration:0.07];
        SKAction *removeNode = [SKAction removeFromParent];
        SKAction *seq = [SKAction sequence:@[grow, shrink, removeNode]];

        [TestObject runAction:seq];
        [self CreateTestObject];

        [self runAction:[SKAction playSoundFileNamed:@"Sound.aif" waitForCompletion:NO]];

    }
}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
for (UITouch *touch in touches) 
    {
    //CGPoint location = [touch locationInNode:self];
    UITouch *touch = [touches anyObject];
    CGPoint positionInScene = [touch locationInNode:self];
    [self selectNodeForTouch:positionInScene];
    }
}

@end

1 个答案:

答案 0 :(得分:0)

修改要添加到视图中的任何对象的(x,y)坐标的最大值。

例如,在横向模式的iPhone 5显示器上,生成的对象大小为宽度= 100,高度= 100,最大x值不应超过518.屏幕宽度为568,减去宽度的一半你的对象(50)。

同样的逻辑适用于y值。给定相同的对象尺寸,最大y值应为270。

以上假设您没有将对象的锚点从(0.5,0.5)更改为其他值。