swift - Swift - 如何为特定节点添加场景边界?
问题描述
我正在尝试使用 SpriteKit 开发一个 IOS 游戏,并且我想在场景中添加一个物理体,这样玩家就无法穿过屏幕的边缘。同时,我希望一些节点(例如——从天上掉下来的炸弹)能够穿过屏幕的边缘。
我知道我可以使用以下行将物理体添加到场景中:
self.physicsBody = SKPhysicsBody (edgeLoopFrom: self.frame)
我的问题是如何让“炸弹”物体穿过这样的身体,同时让“玩家”物体受制于这些边界。
解决方案
答案是相对于categoryBitMask
所collisionBitMask
涉及的物理体的。
例如,对于场景:
if let scenePB = scene.physicsBody {
scenePB.categoryBitMask = 1
scenePB.collisionBitMask = 2 // collides with player
}
对于玩家:
if let playerPB = player.physicsBody {
playerPB.categoryBitMask = 2
playerPB.collisionBitMask = 1+4 // collides with scene and bombs
}
对于任何炸弹:
if let bombPB = bomb.physicsBody {
bombPB.categoryBitMask = 4
bombPB.collisionBitMask = 2 // collides with player
}
推荐阅读
- jsp - JSP 控制器类NotFoundException 错误
- django - Django Rest Framework - @csrf_exempt 不适用于自定义 JWT-HTTPOnly Cookie 身份验证
- php - 在PHP中形成一个JSON获取一个多维数组
- c - 不能在程序中提供更大的输入
- python - Python Pandas - 遍历 Excel 文件的文件夹,将每个 Excel 文件的工作表中的数据导出到它们自己的 .xlsx 文件中
- reporting-services - 将过滤器应用于表达式或在数据集 Reportbuilder 中创建
- r - R工作室停止工作。卸载并重新安装,但无法检测到所有软件包
- python - 了解 shap_values() 函数以确定机器学习模型在做什么
- binary - 如何扩展此二进制乘法器设计
- javascript - 根据选择更改显示的对象