gpt4 book ai didi

iOS 碰撞检测

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

我已经尝试过让碰撞检测按照我需要的方式工作,但没有成功。我想要完成的是当角色触摸某个对象时收到通知,但不阻止它移动到该对象。在 GameScene 中,我将对象的物理设置如下:

Category Mask: 8
Collision Mask: 0
Field Mask: 0
Contact Mask: 0

我在代码中将角​​色添加到场景中。我有这样的类别结构:

struct PhysicsCategory {
static let None: UInt32 = 0
static let Player: UInt32 = 0b1 // 1
static let Pillar:UInt32 = 0b10// 2
static let Chest:UInt32 = 0b100// 4
static let Ladder:UInt32 = 0b1000
}

角色物理是这样的:

 playerWalk.physicsBody?.categoryBitMask=PhysicsCategory.Player
playerWalk.physicsBody?.collisionBitMask=PhysicsCategory.Pillar
playerWalk.physicsBody?.contactTestBitMask=PhysicsCategory.Chest | PhysicsCategory.Ladder

playerWalk.physicsBody = SKPhysicsBody(rectangleOf:
playerWalk.frame.size)

由于某种原因,角色停在梯子上而不是在梯子上移动。我不知道我做错了什么。

最佳答案

编辑 - 在实际创建 playerWalk.physical body 之前,您已经设置了playerWalk 物理体的属性。因此,categoryBitMaskcollisionBitMaskcontactTestBitMask 的值未设置,因为您使用了可选链接,因此 playerWalk。 PhysicsBody? 解析为 nil 并且没有任何设置。

然后,当您创建 playerWalk 物理体时,它仅具有默认属性,即没有类别、没有接触并与所有物体发生碰撞,因此它与您的梯子发生碰撞,因此无法在其上移动。

移动线:

playerWalk.physicsBody = SKPhysicsBody(rectangleOf: playerWalk.frame.size)

到设置物理体属性的行之前。

关于iOS 碰撞检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152346/

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