gpt4 book ai didi

swift - 缩放和置换节点的最佳方法是什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:35:48 25 4
gpt4 key购买 nike

我正在使用 Swift 3、SpriteKit 和 Xcode。

所以我有一个名为 backgroundNode 的节点,我将游戏的每个节点附加到这个 backgroundNode。

现在我希望能够通过捏合手势放大我的游戏,以及当我放大以在我的游戏中导航时。

我看到了 2 种可能性:

  • 置换背景节点并改变其缩放比例以放大和缩小,
  • 使用 SKCameraNode

您认为最好的选择是什么?

我已经尝试过第一个选项,但是缩放手势非常复杂,就好像我想缩放时放大 backgroundNode 一样, anchor 在 0;0 而不是 0.5;0.5,所以它不会缩放捏手势检测到了,但是从右下角,不知道你明白我的意思没有。

对于第二种选择,我无法在不产生故障效果的情况下移动相机,也许我的代码是错误的,但它看起来确实是正确的。

你能帮帮我吗?

编辑:所以我使用 SKCameraNodeUIPanGestureRecognizer 让它工作,这里是代码:

var cam: SKCameraNode!

let panGesture = UIPanGestureRecognizer()

override func didMove(to view: SKView)
{
cam = SKCameraNode()
camera = cam
cam.position = CGPoint(x: playableRect.midWidth, y: playableRect.midHeight)
addChild(cam)

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(GameScene.panFunction))
view.addGestureRecognizer(panGesture)
}

func panFunction(pan : UIPanGestureRecognizer)
{
let deltaX = pan.translation(in: view).x
let deltaY = pan.translation(in: view).y

cam.position.x -= deltaX
cam.position.y += deltaY

pan.setTranslation(CGPoint(x: 0, y: 0), in: view)
}

现在我正在为 Zoom 苦苦挣扎。我尝试使用 UIPinchGestureRecognizer 但它的效果不如平移手势,这是我尝试过的:

var firstPinch: CGFloat = 0

var pinchGesture = UIPinchGestureRecognizer()
let panGesture = UIPanGestureRecognizer()
var cam: SKCameraNode!

override func didMove(to view: SKView)
{
let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(GameScene.pinchFunction))
view.addGestureRecognizer(pinchGesture)

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(GameScene.panFunction))
view.addGestureRecognizer(panGesture)
}

func pinchFunction(pinch : UIPinchGestureRecognizer)
{
if UIGestureRecognizerState.began == pinch.state
{
firstPinch = pinch.scale
}

actualPinch = pinch.scale

cam.xScale -= actualPinch - firstPinch
cam.yScale -= actualPinch - firstPinch
}

你会怎么做?

最佳答案

您需要发布您的代码。我在另一个论坛上帮助过某人。他们的代码 + 我的回答应该可以大致说明该怎么做:

https://forums.developer.apple.com/message/192823#192823

基本上它涉及 UIPanGestureRecognizer 等,然后是一些 delta-scale 逻辑来调整相机的新边界。

关于swift - 缩放和置换节点的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709148/

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