我想知道是否可以使用SFML库在C中使用颜色设置冲突? 因为我正在使用带有图块的地图,我不知道它是否可以一起工作。
谢谢!
答案 0 :(得分:0)
据我所知,你使用两种颜色的图像来定义碰撞(比如说白色是可以通过的,黑色是被遮挡的)。并且您希望SFML识别它。正确? sf::Image
(sfImage_createFromFile
和sfImage_getPixelsPtr
如果您使用的是CSFML)可以读取图像文件并为您提供像素数组(颜色)。但是SFML不处理冲突,它是一个渲染库。碰撞必须是程序逻辑的一部分。
答案 1 :(得分:0)
最简单的方法就是使用像这样的sprite.setColor函数
//Sets the sprite to purple
sprite.setColor(sf::Color(255,0,255));
这是文档 http://www.sfml-dev.org/documentation/2.0/classsf_1_1Sprite.php#a14def44da6437bfea20c4df5e71aba4c这里是sf :: Color文档http://www.sfml-dev.org/documentation/2.0/classsf_1_1Color.php
答案 2 :(得分:0)
处理冲突必须是您在代码中定义的内容。 如果你正在处理一个瓦片地图,它应该保留每个瓦片的值,定义它是哪种类型的单元格。
使用这些值,您可以在程序中工作并单独执行绘图和逻辑,但两者都基于图块地图信息。
一方面,您必须使用与图块值对应的颜色绘制图块。这个过程是为了绘制每一帧,所以你不应该用复杂的逻辑充电(因为碰撞)
另一方面,您必须检查其他实体(玩家,射弹等)是否与瓷砖逐个碰撞,最好仅在需要时(例如,通过事件调用,作为用户输入)