gpt4 book ai didi

swift - 使用物理体阻止 Sprite 离开屏幕

转载 作者:行者123 更新时间:2023-11-30 11:31:27 27 4
gpt4 key购买 nike

我有一个 Sprite ,用户可以通过按屏幕的左侧或右侧来从一侧移动到另一侧。如果按住任一侧,玩家 Sprite 就会离开屏幕。我想用肉体来阻止这种情况的发生,但我似乎无法让它发挥作用。

首先,这是我的类别。

//Categories for physics bodies
let sceneCategory:UInt32 = 0x1 << 0 // Equal to 1
let playerCategory:UInt32 = 0x1 << 1 // Equal to 2

这里是我设置场景本身的物理主体的地方。

self.physicsWorld.contactDelegate = self
self.physicsBody = SKPhysicsBody(edgeLoopFrom: self.frame)
self.physicsBody?.categoryBitMask = sceneCategory
self.physicsBody?.contactTestBitMask = playerCategory
self.physicsBody?.collisionBitMask = 0
self.physicsBody?.isDynamic = false

这就是我为玩家本身设置物理效果的方式。我正在尝试将物理主体设置在汽车本身周围。我设置它的方式与设置 alpha mask 物理体的方式相同吗?

let texture = SKTexture(imageNamed: "PorscheBlue")
player.physicsBody = SKPhysicsBody(texture: texture, size: player.size)
player.physicsBody?.isDynamic = false
player.physicsBody?.categoryBitMask = playerCategory
player.physicsBody?.contactTestBitMask = sceneCategory
player.physicsBody?.collisionBitMask = 0

然后,在 didBegin 方法中,我只想打印显示该方法已被调用。但由于某种原因,这并没有发生。

func didBegin(_ contact: SKPhysicsContact)
{
print("called")
}

为什么没有调用 didBegin 方法?我的物理设置正确吗?我怎样才能让玩家在移动时不允许离开屏幕?

谢谢

编辑:因此,当物理边界可见时,看起来场景的边界仅绘制在顶部和底部。我看不到侧面有任何线条。这可能是问题所在,但我无法让它显示在侧面。

最佳答案

我通过更改动态值解决了我的问题。我将两者都设置为 false,这导致 didBegin 函数不被调用。至少其中一个节点需要是动态的。

关于swift - 使用物理体阻止 Sprite 离开屏幕,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206385/

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