Ios 如何将随机纹理与动画的另一个纹理匹配?
我有一个球,我有不同的颜色。球有两个纹理(texture1和texture2),我运行它们来对它们进行动画。我有不同颜色的球。一旦我调用一个随机函数来调用任意一个随机球(texture1),我的另一个函数就不会将它与相同的球颜色(texture2)匹配。例如,如果我的Ios 如何将随机纹理与动画的另一个纹理匹配?,ios,xcode,swift,animation,sprite-kit,Ios,Xcode,Swift,Animation,Sprite Kit,我有一个球,我有不同的颜色。球有两个纹理(texture1和texture2),我运行它们来对它们进行动画。我有不同颜色的球。一旦我调用一个随机函数来调用任意一个随机球(texture1),我的另一个函数就不会将它与相同的球颜色(texture2)匹配。例如,如果我的texture1调用redBallUp,我的另一个函数就不会将其与redballDown匹配,而是随机调用一个纹理。有时,它会匹配它,但动画会在不同的纹理之间不断切换,有时,它根本不调用texture2 我是这样设置的: class
texture1
调用redBallUp,我的另一个函数就不会将其与redballDown
匹配,而是随机调用一个纹理。有时,它会匹配它,但动画会在不同的纹理之间不断切换,有时,它根本不调用texture2
我是这样设置的:
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
let ballTexture1 = SKTexture(imageNamed: getRandomBallUp())
ballTexture1.filteringMode = SKTextureFilteringMode.Nearest
let ballTexture2 = SKTexture(imageNamed: getRandomBalldDown())
ballTexture2.filteringMode = SKTextureFilteringMode.Nearest
let anim = SKAction.animateWithTextures([ballTexture1, ballTexture2], timePerFrame: 0.15)
let upDown = SKAction.repeatActionForever(anim)
ball = SKSpriteNode(texture: ballTexture1)
ball.position = CGPoint(x: self.frame.size.width / 2.8, y:CGRectGetMidY(self.frame))
ball.runAction(upDown)
self.addChild(ball)
}
func getRandomBallUp() -> String{
let randomval = arc4random_uniform(6)
var ballUp = ""
switch(randomval)
{
case 0:
ballUp = "BlueBallUp"
case 1:
ballUp = "DarkBlueBallUp"
case 2:
ballUp = "GreenBallUp"
case 3:
ballUp = "PurpleBallUp"
case 4:
ballUp = "RedBallUp"
case 5:
ballUp = "YellowBallUp"
default:()
}
return ballUp
}
func getRandomBallDown() -> String{
var ballDown = ""
if (getRandomBallUp() == "BlueBallUp") {
ballDown = "BlueBallDown"
}
if (getRandomBallUp() == "DarkBlueBallUp") {
ballDown = "DarkBlueBallDown"
}
if (getRandomBallUp() == "GreenBallUp") {
ballDown = "GreenBallDown"
}
if (getRandomBallUp() == "PurpleBallUp") {
ballDown = "PurpleBallDown"
}
if (getRandomBallUp() == "RedBallUp") {
ballDown = "RedBallDown"
}
else if (getRandomBallUp() == "YellowBallUp") {
ballDown = "YellowBallDown"
}
return ballDown
}
每次调用getRandomBallUp()时,都会生成一个随机值并基于该值返回一个字符串。为了避免这种情况,您需要将
getRandomBallDown()
更改为如下内容:
func getCorrespondingRandomBallDown(ballUp:String) -> String{
var ballDown = ""
if (ballUp == "BlueBallUp") {
ballDown = "BlueBallDown"
}
if (ballUp == "DarkBlueBallUp") {
ballDown = "DarkBlueBallDown"
}
if (getRandomBallUp() == "GreenBallUp") {
ballDown = "GreenBallDown"
}
if (ballUp == "PurpleBallUp") {
ballDown = "PurpleBallDown"
}
if (ballUp == "RedBallUp") {
ballDown = "RedBallDown"
}
else if (ballUp == "YellowBallUp") {
ballDown = "YellowBallDown"
}
return ballDown
}
您还需要更改didMoveToView:
override func didMoveToView(view: SKView) {
let ballUp = getRandomBallUp()
let ballTexture1 = SKTexture(imageNamed: ballUp)
ballTexture1.filteringMode = SKTextureFilteringMode.Nearest
let ballTexture2 = SKTexture(imageNamed: getCorrespondingRandomBallDown(ballUp)
ballTexture2.filteringMode = SKTextureFilteringMode.Nearest
let anim = SKAction.animateWithTextures([ballTexture1, ballTexture2], timePerFrame: 0.15)
let upDown = SKAction.repeatActionForever(anim)
ball = SKSpriteNode(texture: ballTexture1)
ball.position = CGPoint(x: self.frame.size.width / 2.8, y:CGRectGetMidY(self.frame))
ball.runAction(upDown)
self.addChild(ball)
}
每次调用getRandomBallUp()时,都会生成一个随机值并基于该值返回一个字符串。为了避免这种情况,您需要将
getRandomBallDown()
更改为如下内容:
func getCorrespondingRandomBallDown(ballUp:String) -> String{
var ballDown = ""
if (ballUp == "BlueBallUp") {
ballDown = "BlueBallDown"
}
if (ballUp == "DarkBlueBallUp") {
ballDown = "DarkBlueBallDown"
}
if (getRandomBallUp() == "GreenBallUp") {
ballDown = "GreenBallDown"
}
if (ballUp == "PurpleBallUp") {
ballDown = "PurpleBallDown"
}
if (ballUp == "RedBallUp") {
ballDown = "RedBallDown"
}
else if (ballUp == "YellowBallUp") {
ballDown = "YellowBallDown"
}
return ballDown
}
您还需要更改didMoveToView:
override func didMoveToView(view: SKView) {
let ballUp = getRandomBallUp()
let ballTexture1 = SKTexture(imageNamed: ballUp)
ballTexture1.filteringMode = SKTextureFilteringMode.Nearest
let ballTexture2 = SKTexture(imageNamed: getCorrespondingRandomBallDown(ballUp)
ballTexture2.filteringMode = SKTextureFilteringMode.Nearest
let anim = SKAction.animateWithTextures([ballTexture1, ballTexture2], timePerFrame: 0.15)
let upDown = SKAction.repeatActionForever(anim)
ball = SKSpriteNode(texture: ballTexture1)
ball.position = CGPoint(x: self.frame.size.width / 2.8, y:CGRectGetMidY(self.frame))
ball.runAction(upDown)
self.addChild(ball)
}
beyowulf有答案,但这是swift baby,让我们使用它的一些功能:
func getRandomBall() -> (up:String,down:String){
let randomval = arc4random_uniform(6)
var ball = ""
switch(randomval)
{
case 0:
ball = "BlueBall"
case 1:
ball = "DarkBlueBall"
case 2:
ball = "GreenBall"
case 3:
ball = "PurpleBall"
case 4:
ball = "RedBall"
case 5:
ball = "YellowBall"
default:()
}
return (up:"\(ball)Up",down:"\(ball)Down")
}
override func didMoveToView(view: SKView) {
let ballTextureName = getRandomBall()
let ballTexture1 = SKTexture(imageNamed: ballTextureName.up)
ballTexture1.filteringMode = SKTextureFilteringMode.Nearest
let ballTexture2 = SKTexture(imageNamed: ballTextureName.down)
ballTexture2.filteringMode = SKTextureFilteringMode.Nearest
let anim = SKAction.animateWithTextures([ballTexture1, ballTexture2], timePerFrame: 0.15)
let upDown = SKAction.repeatActionForever(anim)
ball = SKSpriteNode(texture: ballTexture1)
ball.position = CGPoint(x: self.frame.size.width / 2.8, y:CGRectGetMidY(self.frame))
ball.runAction(upDown)
self.addChild(ball)
}
beyowulf有答案,但这是swift baby,让我们使用它的一些功能:
func getRandomBall() -> (up:String,down:String){
let randomval = arc4random_uniform(6)
var ball = ""
switch(randomval)
{
case 0:
ball = "BlueBall"
case 1:
ball = "DarkBlueBall"
case 2:
ball = "GreenBall"
case 3:
ball = "PurpleBall"
case 4:
ball = "RedBall"
case 5:
ball = "YellowBall"
default:()
}
return (up:"\(ball)Up",down:"\(ball)Down")
}
override func didMoveToView(view: SKView) {
let ballTextureName = getRandomBall()
let ballTexture1 = SKTexture(imageNamed: ballTextureName.up)
ballTexture1.filteringMode = SKTextureFilteringMode.Nearest
let ballTexture2 = SKTexture(imageNamed: ballTextureName.down)
ballTexture2.filteringMode = SKTextureFilteringMode.Nearest
let anim = SKAction.animateWithTextures([ballTexture1, ballTexture2], timePerFrame: 0.15)
let upDown = SKAction.repeatActionForever(anim)
ball = SKSpriteNode(texture: ballTexture1)
ball.position = CGPoint(x: self.frame.size.width / 2.8, y:CGRectGetMidY(self.frame))
ball.runAction(upDown)
self.addChild(ball)
}
知道了。非常感谢你。有道理,明白了。非常感谢你。这是有道理的。