我正在研究一个简单的赛车游戏,您在赛道上驾驶汽车。 轨道是灰色的,背景是绿色的,并且只要我到达给定点(汽车的前部)的颜色不是灰色,汽车就应该停止行驶,因为它走出了轨道。
但是轨道不是用sfml绘制的,而是我制作的下载图像。 那么,只要rgb值匹配,有什么方法可以获取图像上像素的颜色?
这是执行此操作的伪代码:
游戏运行时
获得颜色(汽车x值,汽车y值)
如果颜色不是灰色
汽车停靠
谢谢!
答案 0 :(得分:0)
您可以使用适当的方法sf::Image::getPixel
来获取sf::Color
中像素的sf::Image
。它需要X和Y坐标。
示例:
sf::Image track;
if (!track.loadFromFile("track.jpg"))
{
// oops, loading failed, handle it
}
sf::Color color = track.getPixel(0, 0); // gets the color of the upper left corner pixel
答案 1 :(得分:0)
您将要使用sf :: Image的getPixel(int x,int y)函数。您的伪代码将如下所示:
sf::Image track;
sf::Color grey_color; // You'll need to define what the grey color is.
// Take sf::Color(100, 100, 100) as an example.
if (!track.loadFromFile("track.jpg")) {
std::cout << "Uhoh" << std::endl;
}
while (gameIsRunning) {
sf::Color color_at_car = track.getPixel(car.getx(), car.gety());
if (color_at_car != grey_color) {
car.stop();
}
}
希望这会有所帮助!