현재이 코드를 실행하면 컬러 볼이 화면 상단에서 하단으로 실행됩니다. 바닥에 도달하면 상단에 다시 나타나고 다시 떨어집니다. 다시 볼 때마다 무작위 색으로 변경해야합니다. colorChange
동작이 있지만 여전히 실행될 때 볼의 색이 변경되지 않습니다.스폰 될 때마다 무작위로 SKShapeNode의 색상을 변경하는 방법은 무엇입니까?
import SpriteKit
class GameScene: SKScene {
let ball = SKShapeNode(circleOfRadius: 20)
let label = SKLabelNode(fontNamed: "Futura")
let colorChange = SKAction.colorizeWithColor(.blueColor(), colorBlendFactor: 1, duration: 1)
let randomRed = Int(arc4random_uniform(255))
let randomGreen = Int(arc4random_uniform(255))
let randomBlue = Int(arc4random_uniform(255))
override func didMoveToView(view: SKView) {
let sceneBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsBody = sceneBody
//Ball Transition
let ballTransition = SKAction.sequence([SKAction.fadeInWithDuration(1)])
ball.runAction(ballTransition)
ball.fillColor = UIColor(red: 100, green: 100, blue: 0, alpha: 1)
ball.physicsBody = SKPhysicsBody(circleOfRadius: 25)
ball.physicsBody?.affectedByGravity = false
ball.position = CGPoint(x: self.frame.size.width/2, y: CGFloat(self.frame.size.height*1))
ballMovement()
self.addChild(ball)
self.addChild(label)
}
func ballMovement() {
let moveBall = SKAction.moveToY(0, duration: 3)
let goBackUp = SKAction.moveToY(self.frame.size.height, duration:0)
let keepFalling = SKAction.sequence([moveBall, goBackUp, colorChange])
ball.runAction(SKAction.repeatActionForever(keepFalling))
//Label Sprite
label.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))
label.fontColor = SKColor.redColor()
label.fontSize = 30
}
override func update(currentTime: CFTimeInterval) {
label.text = "\(ball.position.y)"
if ball.position.y < 26 {
ball.position = CGPoint(x: self.frame.size.width/2, y: CGFloat(self.frame.size.height*1))
}
}
}
채우기 색 파란색은 0입니다. 0을 곱하면 0이됩니다. 색 배합 인수가 1 인 경우에도 0으로 유지됩니다. colorize를 사용하려는 경우 흰색 (1,1,1, 1). 작업이 완료되면 색상을 설정하는지 잘 모르겠습니다. 대신 채우기 색상을 원하는 색상으로 변경하십시오. 전환 효과를 만들려면 'customActionWithDuration'을 사용하십시오. – Knight0fDragon