gpt4 book ai didi

swift - 检测物体靠近墙壁

转载 作者:行者123 更新时间:2023-11-28 07:59:37 24 4
gpt4 key购买 nike

我正在尝试编写一些非常简单的东西 - 并在此实例上使用 SpriteKit。我在其他平台上的做法是让一个看不见的 child “棍子”伸出一点。通过检测看不见的“棍子”之间的碰撞,我可以判断物体是否靠近墙壁。我正在尝试使用 SpriteKit 复制相同的东西。当然,我更希望有一个看不见的“光束”从物体中射出并给我距离——但这可能太麻烦了。

我会感谢任何改进我到目前为止的愚蠢项目的方法。

My Project so far

谢谢。

最佳答案

这是我想出的,不涉及物理...

拖动鼠标移动汽车,中间的标签会更新,告诉您到最近墙壁的距离。释放鼠标以重置汽车。

非常简单的示例,可以更新以提供更准确的测量值。

class GameScene: SKScene {


let car = SKSpriteNode(color: .blue, size: CGSize(width: 50, height: 100))
let label = SKLabelNode(text: "")


func findNearestWall() -> CGFloat {

// you can make this more advanced by using the CGPoint of the frame borders of the car, or even 6+ points for more accuracy

let closestX: CGFloat = {

if car.position.x < 0 { // left wall
return abs(frame.minX - car.position.x)
} else { // right wall
return abs(frame.maxX - car.position.x)
}
}()

let closestY: CGFloat = {
if car.position.y < 0 { // bottom wall
return abs(frame.minY - car.position.y)
} else { // top wall
return abs(frame.maxY - car.position.y)
}
}()

if closestX < closestY {
return closestX.rounded() // as closest wall distance
} else {
return closestY.rounded() // as closest wall distance
}
}


override func didMove(to view: SKView) {
removeAllChildren()
label.fontSize *= 2
addChild(car)
addChild(label)
}

override func mouseDown(with event: NSEvent) {
}

override func mouseDragged(with event: NSEvent) {
let location = event.location(in: self)
car.position = location
}

override func mouseUp(with event: NSEvent) {
car.position = CGPoint.zero
}

override func didEvaluateActions() {
label.text = String(describing: findNearestWall())
}
}

关于swift - 检测物体靠近墙壁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47000225/

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