6-8 编辑地图单元上的河流信息
在上一章中,我们完成了对鼠标左键按下时拖拽的检测,并创建了相关逻辑处理的代码。在这一章中我们将完善这些逻辑,使我们可以在Inspector面板的Debug模式下,可以看到地图单元上是否有河流与河流的信息。
目前我们已经可以检测鼠标左键按下后的拖拽事件了。接下来,我们就可以对每个地图单元上添加或移除河流信息了。这里要注意,移除河流是不需要检测鼠标左键按下时的拖拽事件的。代码如下:
1 | private void EditCell(HexCell cell) |
这样,我们就就可以通过数百左键按下拖拽,在两个相邻的地图单元上创建流入和流出的河流了。但这样只是针对单个地图单元进行操作,我们忽略了笔刷的因素,感觉上没有什么不妥。既然有笔刷这个属性,那么我们在创建河流的时候,就应该创建出所有在笔刷范围内地图单元的河流。既然是在笔刷覆盖单位内创建河流信息,那就要确保笔刷覆盖范围内,都有地图单元的实例。代码如下:
1 | private void EditCell(HexCell cell) |
运行Unity,通过鼠标左键按下后拖拽,我们就可以创建地图单元上的河流信息了,虽然现在我们没办法在Game窗口中直接看到河流的创建和删除,但是我们可以通过Inspector面板的Debug模式来查看每个地图单元上的河流信息是否正确。如下图:
这里要注意,我们之前使用了鼠标抬起事件Input.GetMouseButtonUp(0)
来检测是否点击到了地图上,而现在因为添加了拖拽功能,所以只检测鼠标左键事件即可Input.GetMouseButton(0)
。代码如下:
1 | public class HexMapEditor : MonoBehaviour |
至此,我们就完成了鼠标左键按下拖拽进行河流的创建或移除的功能了。在接下来的章节中,我们将分析河流的三角剖分形状,逐步作出在地图系统中可见的河流。