Java 检测图像何时与特定颜色相交?

Java 检测图像何时与特定颜色相交?,java,colors,game-engine,intersection,Java,Colors,Game Engine,Intersection,我11岁了,我用Java、HTML和CSS编程。我有一个游戏,它是一个Minecraft 2D平台 我有一些水在旁边,我想做的是当球员穿过水时,我想让它慢下来。这里是一个例子,如果有一种方法可以做到这一点,以防你仍然不理解我的目标 if (player.intersectsColor("0026FF")) playerSpeed = 2; else playerSpeed = 3; 我建议你不是根据颜色而是根据位置来代表水。这样,您可以检查玩家是否在代表水的“瓷砖”中,并相应地

我11岁了,我用Java、HTML和CSS编程。我有一个游戏,它是一个Minecraft 2D平台

我有一些水在旁边,我想做的是当球员穿过水时,我想让它慢下来。这里是一个例子,如果有一种方法可以做到这一点,以防你仍然不理解我的目标

if (player.intersectsColor("0026FF"))
    playerSpeed = 2;
else
    playerSpeed = 3;

我建议你不是根据颜色而是根据位置来代表水。这样,您可以检查玩家是否在代表水的“瓷砖”中,并相应地调整速度

这可以通过简单的x/y坐标比较来实现(根据“平铺”/“播放器”的大小进行调整)

如果你没有很好的网状瓷砖,但有曲线/多边形,你需要阅读几何体和如何计算(可能是曲线)线交点。精确的算法将取决于所使用的曲线

我不鼓励您在交叉点使用颜色本身的原因有两个:

  • 单一颜色上的“相交”限制了您以后动态为地形/对象着色的能力
  • 不能有两个颜色相同的不同terrain.object类型
  • 拥有地形/物体的颜色(例如棕色)不会告诉你玩家遇到了哪个蓝色地形/物体(例如,是第一个还是第二个胸部?)

  • 如果你真的想用颜色来表示地形,你可以将玩家在游戏中的坐标转换成屏幕坐标,并查看屏幕上该坐标处的颜色像素(在玩家在场景中渲染之前),但这很混乱。

    Noah,很抱歉,这里的其他用户对你投了反对票,而不是提供建议或提出更明确的问题。你是在问Minecraft是否有intersectsColor这样的方法,还是在问如果该方法确实存在,这是否是一种正确的方法?@BrianReindel我添加的代码就是示例,如果
    Image
    类中存在这样的方法。我要问的是,当
    图像
    播放器
    与某种颜色相交时,如何执行代码,在本例中,蓝色与颜色代码为0026FF。我想要的是当玩家进入水中(0026FF),然后将玩家的速度整数减少1。我之所以说
    playerSpeed=2
    而不是
    playerSpeed--
    是因为这将在一个循环中运行,它将做的是在水中每毫秒减去一个。你可能会发现,在Minecraft的某个社区,甚至在其中一个社区,你会得到更大的响应。它似乎比Java更适合Minecraft。好吧,我把水放在背景图像上,它是弯曲的,这就是我需要帮助的地方