gpt4 book ai didi

ios - SKShapeNode 位置和 touch.location 的区别

转载 作者:行者123 更新时间:2023-11-28 08:18:20 25 4
gpt4 key购买 nike

我在学习 Swift 中的 SKNodes 时遇到了一个问题。应用程序应该非常简单:触摸屏并让节点出现在触摸的位置。我不知道为什么,但矩形一直显示在屏幕上的不同位置,但 sn.positiontouch.location(in: view) 位置相同。怎么了?

import SpriteKit
import GameplayKit

class GameScene: SKScene {

private var spinnyNode : SKShapeNode?
private var touchPoint : CGPoint!

override func didMove(to view: SKView) {

let size = CGSize(width: 50, height: 50)

spinnyNode = SKShapeNode(rectOf: size, cornerRadius: CGFloat(0.6)) //init

if let spinnyNode = self.spinnyNode{

spinnyNode.lineWidth = 3

let rotate = SKAction.repeatForever(SKAction.rotate(byAngle: CGFloat(M_PI), duration: 1))
let fade = SKAction.fadeOut(withDuration: 0.5)
let remove = SKAction.removeFromParent()

spinnyNode.run(rotate)
spinnyNode.run(SKAction.sequence([fade, remove]))

}
}

func touchDown(point pos : CGPoint){
if let sn = self.spinnyNode?.copy() as! SKShapeNode? {

sn.position = CGPoint(x: touchPoint.x , y: touchPoint.y)
print("touchDown x:\(touchPoint.x), y:\(touchPoint.y)")

self.addChild(sn)
}
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
guard touches.count == 1 else{
return
}
if let touch = touches.first{
touchPoint = touch.location(in: view)

touchDown(point: touchPoint)
print("touchesBegan -> x: \(touchPoint.x) y: \(touchPoint.y)")
}
}

最佳答案

尝试做这样的事情

import SpriteKit
import GameplayKit

class GameScene: SKScene {

//use whichever image for your node
var ballNode = SKSpriteNode(imageNamed: "ball")

var fingerLocation = CGPoint()

override func didMove(to view: SKView) {

ballNode.size = CGSize(width: 100, height: 100)
ballNode.position = CGPoint(x: self.size.width*0.5, y: self.size.height*0.5)

}


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


if let location = touches.first?.location(in: self){

if let copy = ballNode.copy() as? SKSpriteNode {
copy.position = location
addChild(copy)
}
}
}

}

每次我点击一个随机点,球就会出现。希望这会有所帮助。

关于ios - SKShapeNode 位置和 touch.location 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41946773/

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