我正在使用SpriteKit
构建 2D游戏,这就是我想要实现的目标。
想象一下,垂直滚动SKSpriteNode
代表一座高楼。建筑物使用简单的图像表示,并且物理主体设置为+ (SKPhysicsBody *)bodyWithTexture:(SKTexture*)texture size:(CGSize)size;
(在iOS 8中引入),因此它紧跟建筑物的路径。
建筑的某些部分很特别。与这些部件碰撞应该产生特殊的碰撞动作。例如,触摸建筑物的墙壁会触发动作1 ,但触摸任何窗口都会触发动作2 。
我无法做到的是以某种方式定义那些"特殊块"建筑物。
我正在考虑制作一些"碰撞图"对于每个建筑物的精灵图像,其基本上是透明图像,其中非透明块确定建筑物的可碰撞部分。下面的简单示例(左图:建筑图像,右图:碰撞图图像):
这种方法的问题是在"碰撞图上设置SKPhysicsBody
"像上面那样的图像,主体不适用于所有块,但它只包裹其中一个单独的块。换句话说:一个物理体只能应用于图像中的一个连续块。
总而言之,我想知道在确定非连续碰撞图时使用的是哪种方法。
P.s。:建筑物SKSpriteNode
用多个独特的纹理图像表示,这些图像是一个接一个地垂直滚动。
提前谢谢。
答案 0 :(得分:1)
只是一个想法: 你不能在建筑物上使用两个精灵,它们位于同一个地方: - 一个代表建筑物的物理主体(图像中的左侧) - 反转碰撞图图像以获得单个物理体块。特殊区域应与非特殊区域重叠一个像素
希望你理解我的意思。这只是一个想法