【发布时间】:2015-07-28 18:59:21
【问题描述】:
我正在制作 2d 游戏,我想制作 2d 可见性。所以我的想法是制作地图,然后用另一个黑色(例如)多边形遮盖它,以便玩家可以透过黑色多边形看到地图。所以我的想法是通过黑色多边形绘制某种孔(多边形),以便查看黑色多边形下方的地图。我已经有了知名度,但我不知道如何制作面具。
这是程序到目前为止的样子http://prntscr.com/7y36ev
但问题是,如果有任何物体在黑暗中,它们仍然会被渲染并且玩家可以看到它们。我可以射出一条射线,看看它们是否在视线内,但这会有点麻烦,因为射线将在物体的中心拍摄,例如,如果只有它们的肩膀出现,物体就不会被渲染。有人可以帮忙吗?
编辑 - 对于任何想要做同样事情的人 我用 Path2D 做的。首先,我使用 Path2D 制作外部多边形,然后制作内部多边形(孔)并将孔附加到外部多边形。这是示例代码:
public void paintComponent(Graphics g){
Graphics2D g2d = (Graphics2D) g;
g2d.setColor(Color.red);
Path2D.Double poly = new Path2D.Double();
Path2D.Double hole = new Path2D.Double();
hole.moveTo(40,40);
hole.lineTo(40,60);
hole.lineTo(60,60);
hole.lineTo(60,40);
hole.lineTo(40,40);
poly.moveTo(80,2);
poly.lineTo(80,80);
poly.lineTo(2,80);
poly.lineTo(2,2);
poly.lineTo(80,2);
poly.append(hole, true);
g2d.fill(poly);
}
【问题讨论】:
标签: java graphics polygon polygons