gpt4 book ai didi

swift - SpriteKit - touchesMoved,瞄准十字准线

转载 作者:行者123 更新时间:2023-11-28 13:16:34 27 4
gpt4 key购买 nike

我有一个 spritenode 和一个十字线节点,我希望当玩家触摸 spritenode 并移动十字线时,十字线也会移动。

  override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

for touch: AnyObject in touches {
let location = touch.locationInNode(self)


var body = self.nodeAtPoint(location)

if var name: String = body.name {

if body.name == "aim-button" {

crossHair.position = CGPointMake(crossHair.position.x + 10, crossHair.position.y + 10)
}

}

}
}

十字准线确实会移动,但只能在一个方向上移动,我不知道如何根据触摸移动到的空间使其准确(这显然比十字准线在屏幕上实际移动的空间小得多) 和方向。

最佳答案

    for touch: AnyObject in touches {
//Get the current position in scene of the touch.
let location = touch.locationInNode(self)
//Get the previous position in scene of the touch.
let previousLocation = touch.previousLocationInNode(self)
//Calculate the translation.
let translation = CGPointMake(location.x - previousLocation.x, location.y - previousLocation.y)
//Get the current position in scene of the crossHair.
let position = crossHair.position
// Get the bode touched
var body = self.nodeAtPoint(location)

if var name: String = body.name {

if body.name == "aim-button" {

//Set the position of the crosshair to its current position plus the translation.
crossHair.position = CGPointMake(position.x + translation.x * 2, position.y + translation.y * 2)
//Set the position of the body
body.position = location
}
}
}

如果十字准线移动的距离比触摸移动的距离大,只需将平移乘以一个因子(我在上面的示例中使用 2)。

关于swift - SpriteKit - touchesMoved,瞄准十字准线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28792842/

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