目前有以下几种工具:
MiniMap 小地图工具;第一人称相机;自由漫游相机。
使用请看“Demo”文件夹案例。
-
以场景中的 z 轴正方向为上、以 x 轴正方向为右;
-
以场景中的左下角和右上角为两个基准点,分别记录为 leftBottom、rightTop;
-
将场景中目标物体的 Transform 记录为 target3d;
-
将界面中代表目标物体的 Icon 图标的 RectTransform 记录为 target2d;
-
将小地图的 RectTransform 组件记录为 mapRt;
-
用小地图的长度除以场景的长度得到水平方向上的比例;
(mapRt.rect.width / (rightTop.position.x - leftBottom.position.x))
-
用小地图的宽度除以场景的宽度得到垂直方向上的比例;
(mapRt.rect.height / (rightTop.position.z - leftBottom.position.z))
-
计算三维目标物体距左下角基点的长度和宽度,记录为 horizontal、vertical;
(horizontal = target3d.position.x - leftBottom.position.x)
(vertical = target3d.position.z - leftBottom.position.z)
-
计算小地图中 Icon 图标距离左下角的长度和宽度,记录为 x、y;
(x = horizontal * 水平方向上的比例)
(y = vertical * 垂直方向上的比例)
-
Icon 图标将锚点设置为左下角,设置其位置。
(target2d.anchoredPosition = new Vector(x, y))
使用说明看“第一人称”案例
-
键盘控制移动
通过键盘 W、S、A、D、E、Q 按键分别实现向前、后、左、右、上、下方向的移动
-
视角拉近拉远
通过鼠标滚轮的滚动实现视角的拉近或拉远,作用等同于 W、S 按键
-
视角旋转
通过按住鼠标右键并进行拖动实现视角的旋转:
通过设置 verticalLimitMax、verticalLimitMin 来限制在垂直方向上的旋转角度,以防止相机”倒立“。
-
视角聚焦
通过调用 Focus 函数实现视角的聚焦:
/// <summary> /// 聚焦 /// </summary> /// <param name="position">目标位置</param> /// <param name="rotation">目标旋转</param> /// <param name="duration">时长</param> public void Focus(Vector3 position, Vector3 rotation, float duration);
-
活动区域限制
通过启用 IsRangeClamped 来实现活动范围的限制。
通过设置 xMinValue...zMaxValue 调整活动范围,绿色线条形成的区域即活动的范围,相机运动不会超出该区域。