Ios SpriteKit Clicker游戏为可点击的东西选择产卵区?

Ios SpriteKit Clicker游戏为可点击的东西选择产卵区?,ios,sprite-kit,Ios,Sprite Kit,我是SpriteKit新手,在SpriteKit中创建了一个简单的CLickerGame。现在我已经完成了游戏,但是点击它应该产生的东西,不时在屏幕外产生。我在哪里可以选择arc4random区域,在该区域中该对象将生成 @implementation MyScene -(void)CreateTestObject { SKSpriteNode *TestObject = [SKSpriteNode spriteNodeWithImageNamed:@"TestObject"];

我是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

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

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

相同的逻辑适用于y值。如果对象尺寸相同,则最大y值应为270


以上假设您没有将对象的定位点从(0.5,0.5)更改为另一个值。

如果您编辑您的问题并删除不必要的代码和不必要的文本,例如“您想学习东西”等,这会有所帮助。请保持简洁,但仍然可以理解。当您说“Clicker”时,我停下来听了……)答案仍然适用于代码中创建的任何对象。如果生成新对象,则必须对x和y坐标进行范围检查。很明显,您没有这样做,否则就不会有问题;float ranX=(arc4random()%maxX)+1;int-maxY=(531);浮点数ranY=(arc4random()%maxY)+1;我认为这是成功的!