gpt4 book ai didi

ios - 检查节点是否在屏幕外

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

我的屏幕上有一个节点随陀螺仪移动。但我不能将它的位置限制在屏幕上,我试过这个,但它只适用于底部和顶部:

override func update(currentTime: CFTimeInterval){

...

if sprite.position.x <= sprite.frame.width / 2 {
print("out on the left of the screen")
}
if sprite.position.x >= self.frame.width - sprite.frame.width / 2 {
print("out on the right of the screen")
}
if sprite.position.y <= sprite.frame.height / 2 {
print("out on the top of the screen")
//worked
}
if sprite.position.y <= self.frame.height - sprite.frame.height / 2 {
print("out on the bottom of the screen")
//worked
}

}

最佳答案

由于您试图阻止 Sprite 离开屏幕,我建议您使用 Sprite Kit 的物理引擎。

首先,添加一个SKPhysicsBody到你的 Sprite ,例如:

sprite.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size)

其次,需要在场景中添加一个物理体,例如:

override func didMoveToView(view: SKView) {
super.didMoveToView(view)
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: view.bounds)
}

最后,因为你想禁用重力,你可以只为 sprite 禁用它:

sprite.physicsBody!.affectedByGravity = false
// force unwrapping here is okay because we're SURE sprite has a physics body.

或者,禁用场景中所有内容的重力:

self.physicsWorld.gravity = CGVector.zeroVector
// self in this case is your `SKScene` subclass.

更多信息The Sprite Kit Programming Guide真的很有用,在物理学的情况下,请参阅 Simulating Physics部分。

关于ios - 检查节点是否在屏幕外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31386904/

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