我正在寻找更有经验的程序员的建议和想法。
我要做的是创建我学校建筑的一个楼层的布局,所有的房间都在这样,然后让“人”像一天的模拟一样四处走动(想想来自哈利波特的掠夺者地图)。
我真正想知道的是我如何设置所有内容以实际制作地板的2D版本并保持代表人们通过墙壁的点,并使他们实际上根据他们的时间表去上课。
我已经考虑过尝试使用A *算法并使用节点让人们移动,但我不知道这会有多么有效,以及我如何为人们创造通过的墙壁和门廊。
有没有人对此有任何想法或建议?
编辑::另一个快速问题。我怎样才能让人们去上课等等?特别是如果A *不是最好的想法。
答案 0 :(得分:2)
创建一个代表楼层平面图的位图,这将显示在屏幕上。然后,您将创建平面图的面具,该面具定义了演员可以移动的区域。
面具基本上代表演员可以移动的核心颜色,移动时,你会检查演员周围的像素,以确定演员可以朝他们想要的方向移动,例如
平面图:
面膜:
第一个图像将是屏幕上显示的图像,该掩模将用于确定给定的x / y位置是否表示可移动像素位置(即黑色)。我还包括不同的门类型,但这取决于你。
这种方法的问题在于它的可扩展性不是很高,因为你希望屏蔽不包含任何抗锯齿,你故意要让它在边缘粗糙。
使用Java中的2D图形API生成某种多边形。就个人而言,我会使用某种Shape
,例如Path2D
。这可以从文件中读取信息,或者只是硬编码。
这样您就可以使用可用的API功能轻松确定某个点是否包含在形状中(Shape#contains
)
这种方法允许您对形状应用变换,可以轻松地绘制和翻译。
答案 1 :(得分:0)
一些想法: