gpt4 book ai didi

ios - 如何将随机纹理与另一个纹理匹配以进行动画处理?

转载 作者:行者123 更新时间:2023-11-28 12:54:33 25 4
gpt4 key购买 nike

我有一个球,我有不同的颜色。球有两个纹理(texture1 和 texture2),我运行它们来为它们制作动画。我有不同颜色的球。一旦我调用一个随机函数来调用任何随机球 (texture1),我的另一个函数就不会将它与相同的球颜色 (texture2) 匹配。例如,如果我的 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)
}

关于ios - 如何将随机纹理与另一个纹理匹配以进行动画处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35371112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com