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