【发布时间】:2025-12-12 01:05:01
【问题描述】:
我在spritekit中设置了一张占据整个屏幕的图片,它有自己的physicsBody如下:
我设置了触摸方法,以便用户以清晰的颜色在屏幕上“绘制”,实质上是从图片中移除 alpha:
如您所见,我的physicsBody 会随着图像中的alpha 值的变化而变化。现在,随着我越来越接近另一个边缘,physicsBody 会按照它应该的方式运行,保留所有不是 alpha 0 部分的物体:
但是,当纹理最终被一条 alpha 值为 0 的线分割时,物理体会排除其中一个部分:
这是不受欢迎的行为,因为我想保留所有 alpha 值超过身体部分 0 的东西。我尝试将身体分成多个部分,本质上意味着如果在它们之间画一条线,就会有两个身体。但是,如果在其中一个主体内绘制一条线,这仍然不会改变任何内容。
有谁知道如果它们分开了我可以如何拆分它们?也许其他替代方案可以完成相同的任务?谢谢
【问题讨论】:
-
物理体在这里的用途并不完全清楚。对我来说,这看起来像一个静态节点,那么为什么要使用
physicsBody?我将假设您正在为游戏制作“创建自己的角色”编辑器。此外,您需要意识到使用精确的物理物体在计算上非常昂贵。物理体(又名碰撞盒)应该始终是近似值,例如对五边形对象使用圆形(近似平边)。 -
这是一个更复杂的游戏情况的简化示例。我使用随机图片进行模拟,而实际游戏中的physicsBody 代表了更大的目的。我理解physicsBody 的计算开销,但你必须明白它在我的游戏中是必需的。
-
请贴一些代码。
-
什么代码?我什么都没有。
标签: objective-c sprite-kit alpha-transparency skphysicsbody