Dungeon Mizarka 018

MiniMap制作Part2

找到了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 物件导向程序设计

>>:  (Day30) - 完结心得

Composite:组合模式

Composite:组合模式,当需要组合两个类的时候,比如画图:需要画直綫和点,那麽如果分别调用画直...

Flutter API Get using Bloc state management and http plugin

Flutter API Get using Bloc state management and ht...

【Day29】反馈元件 - Toast

元件介绍 Toast 可以提供使用者操作的反馈讯息。包含一般资讯、操作成功、操作失败、警告讯息等。预...

【课程推荐】2021/9/25-10/3 微服务架构设计与实作 – 使用 Java Spring 与 UML

课程目标 了解什麽是微服务的架构以及使用 UML 塑模呈现 从问题领域界定 Bounded Area...

[3D地图-CesiumJS系列] 三、车辆废气排放地图 - 以粒子系统(Particle system)实作

本篇文章请搭配 [3D地图-CesiumJS系列] 一、快速上手 [3D地图-CesiumJS系列]...