2012-01-04 85 views
0

对于我正在处理的游戏,我想比较SFML2中的两个精灵,例如if()语句。例如,我可以在所有黑色像素中有一个1280x1024的大图像和一个灰色像素。然后我会有2个独立的精灵,一个是灰色像素,另一个是地图。我只会裁剪地图上的灰色像素,并比较两者,如果属实,则执行其他操作。比较精灵?

你看到我在这里得到什么吗?这可能吗?如果是这样,怎么样?

+2

不知道你在做什么和为什么,但你不想比较像素到像素的大型精灵。为了进行碰撞检测,您应该使用更智能,计算量更小的方法,例如比较对象坐标。 – 2012-01-05 03:07:22

回答

2

与亚历克斯说,有更聪明的方法来检查精灵。

  1. 比较的文件名不是,图像内不引用单个像素,因为你必须整个图像加载到内存中做ATM要加载1.3MBytes到内存只是为了检查单个像素?
  2. 将所有资源存储在资源管理器中,并通过UID引用它们(如果资源具有UID,则使用该资源)。

2号是高于一切的最好,但也有许多其他的方式

编辑:按照意见,你不会“裁剪”出像素,你只加载图像到存储和使用Image类获取某个位置像素的颜色。下面就是一个例子

sf::Image* map = MapSprite->GetTexture()->CopyToImage() 
if (map->GetPixel(666,666) == sf::Color::Black) 
{ 
    //Funky stuff here 
} 

注意:您提到SFML2所以这是从一套文档,可以为1.6

EDIT2有所不同:它已经一段时间,因为我用SMFL所以希望代码片段至少会给你指示

+0

这并不能帮助我。 1280x1024尺寸是一个例子,更多的是创建地图。 – Lemmons 2012-01-05 05:15:50

+0

正试图确定使用哪个文件? – CStreel 2012-01-05 05:17:24

+0

你是否正在阅读地图图像以在特定位置创建对象? – CStreel 2012-01-05 05:23:00