gpt4 book ai didi

ios - swift/spritekit 移动然后触摸元素

转载 作者:行者123 更新时间:2023-11-28 06:19:23 25 4
gpt4 key购买 nike

我目前正在使用 spritekit 快速开发一款游戏。我的操纵杆可以使用 this图书馆,这一切都很好。我还将操纵杆移动到用户使用此代码点击的位置:

func updateJoystickPosition(pos: CGPoint) {
let posX = -(self.sceneSize.width/2) + pos.x
let posY = (self.sceneSize.height/2) - pos.y
let newJoystickPos = CGPoint(x: posX, y: posY);

self.joystick.position = newJoystickPos
}

这也很好用,但是,操纵杆不会在那一次点击时接合。您必须点击实际的操纵杆节点才能使操纵杆接合,所以很明显,我希望用户将手指放在屏幕上并立即能够开始四处移动以移动播放器。

它自己的摇杆开始跟踪这个功能

open override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
print(touches)

if let touch = touches.first, stick == atPoint(touch.location(in: self)) {
tracking = true
startHandler?()
}
}

问题:我是否可以修改 touchesBegan 函数或我的任何其他函数来达到预期的结果?

最佳答案

你必须覆盖 touchesMoved(_ touches: ,with event:) 并且在这个方法中只处理所有 touches

例如:

var startTouchingPoint = CGPoint.zero // property

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
startTouchingPoint = touch.location(in: self.camera!))
yourControllerPlace.position = startTouchingPoint
stickOnYourJoystick.position = CGPoint.zero
}
}

override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
for touch in touches {
let point = touch.location(in: self.camera!))
let convertedPoint = CGPoint(x: point.x - startTouchingPoint.x,
y: point.y - startTouchingPoint.y)

stickOnYourJoystick.position = convertedPoint

}
}

关于ios - swift/spritekit 移动然后触摸元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44150083/

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