gpt4 book ai didi

ios - 快速图像堆叠/复制 - iOS

转载 作者:行者123 更新时间:2023-11-30 14:12:55 25 4
gpt4 key购买 nike

我最近开始编码,我的第一次尝试是一款 iOS 游戏,我正在开发的游戏的一部分具有以下元素。

滚动前景和背景点击时会跳跃的猫一枚导弹从天而降。

我最近设法每隔几秒生成一次导弹,但是这样做我认为我搞砸了一些东西。

现在我有两个错误,第一个是猫、前景和背景图像在屏幕上复制和堆叠,另一个是 override func update(currentTime) 下的构建错误。I'已经注释掉了猫的 Z 轴旋转,否则游戏将无法构建。

如果有人能帮我解决问题,我将不胜感激。

抱歉,如果它太过分了,但这是代码......

import SpriteKit

class GameScene: SKScene, SKPhysicsContactDelegate {


var cat = SKSpriteNode()
var crow = SKSpriteNode()
var crowTexture1 = SKTexture()
var skyColor = SKColor()
var moveAndRemoveCrow = SKAction()
var spawn = SKAction()
var lastMissileAdded : NSTimeInterval = 0.0

let missileVelocity : CGFloat = 5.0



override func didMoveToView(view: SKView) {

self.addMissile()

}


func addMissile() {
// Initializing missile node
var missile = SKSpriteNode(imageNamed: "red-missile")
missile.setScale(0.15)

// Adding SpriteKit physics body for collision detection
missile.physicsBody = SKPhysicsBody(rectangleOfSize: missile.size)
// missile.physicsBody?.categoryBitMask = UInt32(obstacleCategory)
missile.physicsBody?.dynamic = true
// missile.physicsBody?.contactTestBitMask = UInt32(shipCategory)
missile.physicsBody?.collisionBitMask = 0
missile.physicsBody?.usesPreciseCollisionDetection = true
missile.name = "missile"

// Selecting random y position for missile
var random : CGFloat = CGFloat(arc4random_uniform(300))
missile.position = CGPoint(x: self.frame.size.width / 1.8, y: self.frame.size.height / 1.2 )
self.addChild(missile)
}

func moveObstacle() {
self.enumerateChildNodesWithName("missile", usingBlock: { (node, stop) -> Void in
if let obstacle = node as? SKSpriteNode {
obstacle.position = CGPoint(x: obstacle.position.x - self.missileVelocity, y: obstacle.position.y)
if obstacle.position.x < 0 {
obstacle.removeFromParent()
}
}
})


skyColor = SKColor(red:113.0/255.0, green:197.0/255.0, blue:207.0/255.0, alpha:1.0)
self.backgroundColor = skyColor

var catTexture1 = SKTexture(imageNamed: "Cat1")
catTexture1.filteringMode = SKTextureFilteringMode.Nearest
var catTexture2 = SKTexture(imageNamed: "Cat2")
catTexture2.filteringMode = SKTextureFilteringMode.Nearest

var anim = SKAction.animateWithTextures([catTexture1, catTexture2], timePerFrame: 0.2)
var run = SKAction.repeatActionForever(anim)

cat = SKSpriteNode(texture: catTexture1)
cat.position = CGPoint(x: self.frame.size.width / 2.2, y: self.frame.size.height / 7.0 )
cat.runAction(run)

cat.physicsBody = SKPhysicsBody(circleOfRadius: cat.size.height / 2.0)
cat.physicsBody!.dynamic = true
cat.physicsBody!.allowsRotation = false

self.addChild(cat)


var groundTexture = SKTexture(imageNamed: "Ground")
groundTexture.filteringMode = SKTextureFilteringMode.Nearest

var moveGroundSprite = SKAction.moveByX(-groundTexture.size().width, y: 0, duration: NSTimeInterval(0.01 * groundTexture.size().width))
var resetGroundSprite = SKAction.moveByX(groundTexture.size().width, y: 0, duration: 0.0)
var moveGroundSpritesForever = SKAction.repeatActionForever(SKAction.sequence([moveGroundSprite,resetGroundSprite]))

for var i:CGFloat = 0; i < 2 + self.frame.size.width / ( groundTexture.size().width); ++i {
var sprite = SKSpriteNode(texture: groundTexture)
sprite.position = CGPointMake(i * sprite.size.width, sprite.size.height / 2)
sprite.runAction(moveGroundSpritesForever)
self.addChild(sprite)

}

var dummy = SKNode()
dummy.position = CGPointMake(0, groundTexture.size().height / 2)
dummy.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.size.width, groundTexture.size().height))
dummy.physicsBody!.dynamic = false
self.addChild(dummy)

var skylineTexture = SKTexture(imageNamed: "Skyline")
skylineTexture.filteringMode = SKTextureFilteringMode.Nearest

var moveSkylineSprite = SKAction.moveByX(-skylineTexture.size().width, y: 0, duration: NSTimeInterval(0.1 * skylineTexture.size().width))
var resetSkylineSprite = SKAction.moveByX(skylineTexture.size().width, y: 0, duration: 0.0)
var moveSkylineSpritesForever = SKAction.repeatActionForever(SKAction.sequence([moveSkylineSprite,resetSkylineSprite]))

for var i:CGFloat = 0; i < 2 + self.frame.size.width / ( skylineTexture.size().width); ++i {
var sprite = SKSpriteNode(texture: skylineTexture)
sprite.zPosition = -20;
sprite.position = CGPointMake(i * sprite.size.width, sprite.size.height / 2 + groundTexture.size().height)
sprite.runAction(moveSkylineSpritesForever)
self.addChild(sprite)
}

}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
/* Called when a touch begins */

cat.physicsBody!.velocity = CGVectorMake(0, 0)
cat.physicsBody!.applyImpulse(CGVectorMake(0, 15))

}

func clamp(min: CGFloat, max: CGFloat, value: CGFloat) -> CGFloat {
if( value > max ) {
return max;
} else if( value < min ) {
return min;
} else {
return value;
}

}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
// cat.zRotation = self.clamp( -1, max: 0.5, value: cat.physicsBody!.velocity.dy * ( cat.physicsBody!.velocity.dy < 0 ? 0.003 : 0.001 ) );
if currentTime - self.lastMissileAdded > 1 {
self.lastMissileAdded = currentTime + 1
self.addMissile()
}

self.moveObstacle()
}


}

最佳答案

我已经明白了,

我在“didMoveToView”中有函数。将它们移出 block 后,代码现在可以顺利运行。

关于ios - 快速图像堆叠/复制 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31551613/

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