gpt4 book ai didi

sprite-kit - 获取 SKCameraNode 以关注英雄 Spritenode

转载 作者:行者123 更新时间:2023-12-03 16:39:05 27 4
gpt4 key购买 nike

我似乎无法弄清楚这一点。我尝试了很多不同的东西,但似乎都没有奏效。使用我当前的代码,相机和英雄永远不会对齐,当我触摸屏幕时,场景似乎跳得很远。我想要做的就是当我触摸屏幕时让英雄移动到触摸点并让相机跟随他。有没有办法将相机锁定到英雄 Sprite 节点?

import SpriteKit


let tileMap = JSTileMap(named: "level2.tmx")
let hero = SKSpriteNode(imageNamed: "hero")
let theCamera: SKCameraNode = SKCameraNode()

class GameScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */

self.anchorPoint = CGPoint(x: 0, y: 0)
self.position = CGPoint(x: 0, y: 0)

hero.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))



hero.xScale = 0.5
hero.yScale = 0.5
hero.zPosition = 2

tileMap.zPosition = 1


tileMap.position = CGPoint(x: 0, y: 0)
self.addChild(tileMap)
self.addChild(hero)
self.addChild(theCamera)

self.camera = theCamera


}

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

for touch in touches {

let location = touch.locationInNode(self)

let action = SKAction.moveTo(location, duration: 1)

hero.runAction(action)



}

}

override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */

self.camera?.position = hero.position
}
}

最佳答案

你看到的场景跳得很远的原因是因为scene.size不等于屏幕大小。我猜你可能会像这样初始化你的第一个场景:

// GameViewController.swift
if let scene = GameScene(fileNamed:"GameScene") {...}

该代码将加载 GameScene.sks 其大小默认为 1024*768。但是由于您添加了 SKSpriteNode以编程方式,您可以通过这种方式初始化场景以适应屏幕尺寸:
// GameViewController.swift
// Only remove if statement and modify
let scene = GameScene(size: view.bounds.size) ...

这将解决您遇到的大部分问题。此外,我建议使用 SKAction 移动相机节点:
override func update(currentTime: CFTimeInterval) {
let action = SKAction.moveTo(hero.position, duration: 0.25)
theCamera.runAction(action)
}

最后一件事,添加此行以在开始时将相机与您的英雄对齐:
self.camera?.position = hero.position

关于sprite-kit - 获取 SKCameraNode 以关注英雄 Spritenode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32687473/

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