使用 arc4Random 设置精灵垂直位置的限制
Setting limits to sprite vertical location with arc4Random
我正在构建我的第一个 2D 平台游戏,我希望使用 arc4Random
对每隔几秒生成的对象设置一些限制。
目前,一只鸟会从右向左飞过屏幕,大多数时候这只鸟似乎在空中,但有时这只鸟在地面上看起来很奇怪。
我想做的是设置生成鸟类的最小和最大高度,这可能吗?
这是一些代码...
func spawnBird() {
var birdP = SKNode()
birdP.position = CGPointMake( self.frame.size.width + birdTexture1.size().width * 2, 0 );
birdP.zPosition = -10;
var height = UInt32( self.frame.size.height / 1 )
var y = arc4random() % height;
var bird1 = SKSpriteNode(texture: birdTexture1)
//Code Removed
birds.addChild(birdP)
您可以设置最小和最大高度:
var height_max = UInt32( self.frame.size.height )
var height_min = UInt32( 20 )
var bird_range = arc4random_uniform(height_max - height_min + 1) + height_min;
替代方法:
var bird_range = (arc4random() % (height_max - height_min) + 1) + height_min;
绘制的方法:
这两个用max/min身高从来没有低于20
,原来你用的方法经常打0
.
这是标准题。
int randomInIntRange(int minVal, int maxVal) {
return minVal+arc4random_uniform(maxVal-minVal+1);
}
CGFloat randomInFloatRange(CGFloat minVal, CGFloat maxVal) {
return minVal+(maxVal-minVal)*(arc4random()/(double)(UINT32_MAX));
}
我正在构建我的第一个 2D 平台游戏,我希望使用 arc4Random
对每隔几秒生成的对象设置一些限制。
目前,一只鸟会从右向左飞过屏幕,大多数时候这只鸟似乎在空中,但有时这只鸟在地面上看起来很奇怪。
我想做的是设置生成鸟类的最小和最大高度,这可能吗?
这是一些代码...
func spawnBird() {
var birdP = SKNode()
birdP.position = CGPointMake( self.frame.size.width + birdTexture1.size().width * 2, 0 );
birdP.zPosition = -10;
var height = UInt32( self.frame.size.height / 1 )
var y = arc4random() % height;
var bird1 = SKSpriteNode(texture: birdTexture1)
//Code Removed
birds.addChild(birdP)
您可以设置最小和最大高度:
var height_max = UInt32( self.frame.size.height )
var height_min = UInt32( 20 )
var bird_range = arc4random_uniform(height_max - height_min + 1) + height_min;
替代方法:
var bird_range = (arc4random() % (height_max - height_min) + 1) + height_min;
绘制的方法:
这两个用max/min身高从来没有低于20
,原来你用的方法经常打0
.
这是标准题。
int randomInIntRange(int minVal, int maxVal) {
return minVal+arc4random_uniform(maxVal-minVal+1);
}
CGFloat randomInFloatRange(CGFloat minVal, CGFloat maxVal) {
return minVal+(maxVal-minVal)*(arc4random()/(double)(UINT32_MAX));
}