找到了tile生成时位置错乱的原因,还是因为进位造成的问题。A★内部是用整数的Vector3Int存位置,但这个值应该是直接用Vector3的值乘上1000,也就是原先浮点数有的误差是会被记下来的。之前没有注意到,所有的值都往上提到下一个位置,而没有比较该值比较接近这个或是下一个位置的值。修改过後的程序码片段如下
var adjustedX = Mathf.Abs(gridNode.position.x) % 4000;
var xOffsetTo4000 = 0;
if (adjustedX > 2000)
{
xOffsetTo4000 = 4000 - adjustedX;
if (gridNode.position.x < 0)
{
adjustedX = (gridNode.position.x) - xOffsetTo4000;
}
else
{
adjustedX = (gridNode.position.x) + xOffsetTo4000;
}
}
else
{
xOffsetTo4000 = adjustedX;
if (gridNode.position.x < 0)
{
adjustedX = (gridNode.position.x) + xOffsetTo4000;
}
else
{
adjustedX = (gridNode.position.x) - xOffsetTo4000;
}
}
而後再搭配一连串没有整理过的运算,用Tile拼出整个房间的布置。
目前的结果看起来如下
比对Unity Editor里3D的上视图
比对的结果很相似,一些地方还要再修正,不过多数情况下不会有太大的影响,日後再进行修正。
将Render Texture放到第二个专门拿来看MiniMap的Camera里,放利用Raw Image呈现render texture可以看到MiniMap大致有个雏形出现
实际的地图
特定将MiniMap的可视范围限制在九宫格的大小里,而按押此MiniMap後则会出现较大的map,以方便观看更多的资讯。
接下来需要调整的部份包含了MiniMap的呈现颜色、Icon和通道的内外区分方式,也或许会慢慢的把Fog of War加进来,但实际会如何呈现还待发想。
日前将可使用的道具加入後没特别注意,但道具呈现时Use是灰色的,也就是无法按下去的状态。UI上可以显示代表UIS的流程没有错,今天也再花一些时间了解是什麽原因造成无法使用道具。
仔细比对UIS的Demo後才发现现在用的那个Item Action和物品使用是没有关系的,使用这个动作在UIS里没有提供,只有Demo里才有,且名称为Consume,而不是Use,之前没有注意到这中间的差异。UIS里内含的Use是一个看文件也不是很清楚在做什麽的动作。
之後看直接用Sample里的Consume还是再额外写一个来用。
<<: D15 - 那个圆圆的东西 - OOP 物件导向程序设计
Composite:组合模式,当需要组合两个类的时候,比如画图:需要画直綫和点,那麽如果分别调用画直...
Flutter API Get using Bloc state management and ht...
元件介绍 Toast 可以提供使用者操作的反馈讯息。包含一般资讯、操作成功、操作失败、警告讯息等。预...
课程目标 了解什麽是微服务的架构以及使用 UML 塑模呈现 从问题领域界定 Bounded Area...
本篇文章请搭配 [3D地图-CesiumJS系列] 一、快速上手 [3D地图-CesiumJS系列]...