我有一个简单的游戏,其中包括两个表面,我快乐的精神。一个是我的角色应该跳过的小方块,第二个是表面,我将我的角色精灵放在上面。我想进行碰撞检测,它只检测表面上的物体,如果有意义的话我的角色不在。所以基本上把它想象成2层,第一层有障碍,第二层有我的角色。我希望它只检测精灵作为第一层的障碍物。有没有办法做到这一点?
答案 0 :(得分:0)
想到的一种方法如下:
首先,分隔每层的对象,比如std::vector<MyObjects*> CharLayerObjects;
(std::vector
,当你在该平面上有更多的对象时,比如环境内容)和std::vector<MyObjects*> CollisionLayerObjects;
。然后只针对CollisionLayerObjects
向量中的对象测试角色。当然,这仅适用于两个表面具有相同尺寸的情况,但我认为这是可以预期的。
答案 1 :(得分:0)
通常,对抽象几何而不是像素数据执行碰撞检测,因此SDL不提供碰撞检测功能。如果您使用抽象表示(例如,正方形或圆形),那么您在表面上进行blit并不会对碰撞产生任何影响 - 您可以比较您想要的任何对象,而不管哪些表面已经与其他表面进行了对比。