2

我今年 11 岁,我使用 Java、HTML 和 CSS 进行编程。好吧,我拥有的是一款游戏,它是一款 Minecraft 2D 平台游戏。

好吧,我有一些水在一边,我想做的是当玩家与水相交时,我希望它放慢速度。如果有方法可以做到这一点,这是一个示例,以防您仍然不理解我的目标。

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

1 回答 1

2

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

这可以通过 x/y 坐标的简单比较来完成(根据“tile”/“player”的大小进行调整)

如果您没有漂亮的网状瓷砖,而是曲线/多边形,则需要阅读几何以及如何计算(可能是弯曲的)线交点。确切的算法将取决于所使用的曲线。

我不鼓励您将颜色本身用于交叉点的原因有很多:

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

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

于 2013-10-26T00:30:34.420 回答