设置一个 RGB 值并将其与另一个值进行比较
Set an RGB value and compare it another
我正在制作一款自上而下的赛车游戏,使用 Phaser 作为框架并使用 JavaScript 和语言。我希望能够分辨两种颜色之间的区别,这样,如果汽车偏离轨道,我可以让它减速。到目前为止,我有以下针对此特定问题的代码:
var currentMatCol = bmd.getPixelRGB(Math.round(car1.x), Math.round(car1.y));
var roadMatCol = RGB(0, 0, 0);
第一行获取汽车颜色(黑色或白色)的 RGB 值。第二行是我挣扎的地方。我知道道路颜色是黑色的,所以当车子不在rgb 0 0 0的时候,我想让它慢下来,就好像在草地上或者沙子上一样。
就像我说的那样,轨道是黑色的,背景是白色的。我已经打印出上面的行以查看它显示的内容,第一行是正确的并且显示了我想要的内容,但第二行没有。
在此之后我有一个 if 语句,看起来像这样:
if (currentMatCol == roadMatCol)
{
//do nothing
}
else
{
//set speed to very slow
}
如有任何帮助,我们将不胜感激。抱歉,如果我没有解释清楚,不展示就很难解释。
getPixelRGB
returns 以组件颜色作为属性(以及其他数据)的对象
见http://phaser.io/docs/2.2.2/Phaser.BitmapData.html#getPixelRGB
查看文档似乎没有函数 RGB
但您可以轻松构建 "color" 对象
roadMatCol = {r: 0, g: 0, b: 0};
当然你不能直接比较两个对象,但你必须分别比较颜色分量。
所以你的代码会变成:
var currentMatCol = bmd.getPixelRGB(Math.round(car1.x), Math.round(car1.y));
var roadMatCol = {r: 0, g: 0, b: 0};
if( currentMatCol.r == roadMatCol.r &&
currentMatCol.g == roadMatCol.g &&
currentMatCol.b == roadMatCol.b )
{
//do nothing
}
else
{
//set speed to very slow
}
通常比较两种颜色 c1
c2
,您必须访问它们的颜色分量 r、g、b(假设它们以 RGB 颜色表示 space ).
最后一点,我认为通过检查汽车的位置而不是查看背景颜色来解决问题(汽车是公路还是越野)可能会更好。
我正在制作一款自上而下的赛车游戏,使用 Phaser 作为框架并使用 JavaScript 和语言。我希望能够分辨两种颜色之间的区别,这样,如果汽车偏离轨道,我可以让它减速。到目前为止,我有以下针对此特定问题的代码:
var currentMatCol = bmd.getPixelRGB(Math.round(car1.x), Math.round(car1.y));
var roadMatCol = RGB(0, 0, 0);
第一行获取汽车颜色(黑色或白色)的 RGB 值。第二行是我挣扎的地方。我知道道路颜色是黑色的,所以当车子不在rgb 0 0 0的时候,我想让它慢下来,就好像在草地上或者沙子上一样。
就像我说的那样,轨道是黑色的,背景是白色的。我已经打印出上面的行以查看它显示的内容,第一行是正确的并且显示了我想要的内容,但第二行没有。
在此之后我有一个 if 语句,看起来像这样:
if (currentMatCol == roadMatCol)
{
//do nothing
}
else
{
//set speed to very slow
}
如有任何帮助,我们将不胜感激。抱歉,如果我没有解释清楚,不展示就很难解释。
getPixelRGB
returns 以组件颜色作为属性(以及其他数据)的对象
见http://phaser.io/docs/2.2.2/Phaser.BitmapData.html#getPixelRGB
查看文档似乎没有函数 RGB
但您可以轻松构建 "color" 对象
roadMatCol = {r: 0, g: 0, b: 0};
当然你不能直接比较两个对象,但你必须分别比较颜色分量。
所以你的代码会变成:
var currentMatCol = bmd.getPixelRGB(Math.round(car1.x), Math.round(car1.y));
var roadMatCol = {r: 0, g: 0, b: 0};
if( currentMatCol.r == roadMatCol.r &&
currentMatCol.g == roadMatCol.g &&
currentMatCol.b == roadMatCol.b )
{
//do nothing
}
else
{
//set speed to very slow
}
通常比较两种颜色 c1
c2
,您必须访问它们的颜色分量 r、g、b(假设它们以 RGB 颜色表示 space ).
最后一点,我认为通过检查汽车的位置而不是查看背景颜色来解决问题(汽车是公路还是越野)可能会更好。