gpt4 book ai didi

ios - 如何禁用屏幕特定区域的滑动球功能? ( swift )(SpriteKit)

转载 作者:行者123 更新时间:2023-11-30 12:16:09 25 4
gpt4 key购买 nike

好的,目前在我的游戏中我有一个可以扔的球。但是,我想让用户只能将球扔过某个点。我已经尝试这个有一段时间了,但我无法弄清楚。我怎样才能做到这一点?

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

let touch = touches.first as! UITouch?
let location = touch?.location(in: self)
if ball.frame.contains(location!) {
touchPoint = location!
touching = true
}
}

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

let touch = touches.first as! UITouch?
let location = touch?.location(in: self)
touchPoint = location!
}
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
touching = false
}

override func update(_ currentTime: TimeInterval) {

if touching {
let dt:CGFloat = 2.8/60.0
let distance = CGVector(dx: touchPoint.x-ball.position.x, dy: touchPoint.y-ball.position.y)
let velocity = CGVector(dx: distance.dx/dt, dy: distance.dy/dt)
ball.physicsBody!.velocity=velocity
}
}

在这里,我有一张到目前为止我的游戏的图像。目前,球可以在屏幕上的任何位置拖动、 throw 或滑动。但是,我想让球只能在屏幕中间下方被触摸、 throw 或拖动。但我希望如果用户的手指不小心超出了限制,球会继续被抛出。

enter image description here

最佳答案

您必须根据实际大小和游戏场景 anchor 调整底部区域的坐标。例如,示例中的“100”假设您的场景的 anchor 为 (0,0),底部滚动区域的大小为 100。

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

if let touch = touches.first as UITouch! {

let location = touch.location(in: self)

guard location < 100 else { return }

//if ball.frame.contains(location!) {
touchPoint = location!
touching = true
//}
}
}

关于ios - 如何禁用屏幕特定区域的滑动球功能? ( swift )(SpriteKit),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45422122/

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