Skip to content

Latest commit

 

History

History
85 lines (47 loc) · 2.48 KB

相机工具使用说明.md

File metadata and controls

85 lines (47 loc) · 2.48 KB

纹路风 » 其它工具使用说明

简介

目前有以下几种工具:

MiniMap 小地图工具;第一人称相机;自由漫游相机

使用请看“Demo”文件夹案例。

MiniMap 小地图

实现原理

  1. 以场景中的 z 轴正方向为上、以 x 轴正方向为右;

  2. 以场景中的左下角和右上角为两个基准点,分别记录为 leftBottom、rightTop;

  3. 将场景中目标物体的 Transform 记录为 target3d;

  4. 将界面中代表目标物体的 Icon 图标的 RectTransform 记录为 target2d;

  5. 将小地图的 RectTransform 组件记录为 mapRt;

  6. 用小地图的长度除以场景的长度得到水平方向上的比例;

    (mapRt.rect.width / (rightTop.position.x - leftBottom.position.x))

  7. 用小地图的宽度除以场景的宽度得到垂直方向上的比例;

    (mapRt.rect.height / (rightTop.position.z - leftBottom.position.z))

  8. 计算三维目标物体距左下角基点的长度和宽度,记录为 horizontal、vertical;

    (horizontal = target3d.position.x - leftBottom.position.x)

    (vertical = target3d.position.z - leftBottom.position.z)

  9. 计算小地图中 Icon 图标距离左下角的长度和宽度,记录为 x、y;

    (x = horizontal * 水平方向上的比例)

    (y = vertical * 垂直方向上的比例)

  10. Icon 图标将锚点设置为左下角,设置其位置。

    (target2d.anchoredPosition = new Vector(x, y))

使用说明看“第一人称”案例

漫游相机

  1. 键盘控制移动

    通过键盘 W、S、A、D、E、Q 按键分别实现向前、后、左、右、上、下方向的移动

  2. 视角拉近拉远

    通过鼠标滚轮的滚动实现视角的拉近或拉远,作用等同于 W、S 按键

  3. 视角旋转

    通过按住鼠标右键并进行拖动实现视角的旋转:

    通过设置 verticalLimitMax、verticalLimitMin 来限制在垂直方向上的旋转角度,以防止相机”倒立“。

  4. 视角聚焦

    通过调用 Focus 函数实现视角的聚焦:

    /// <summary>
    /// 聚焦
    /// </summary>
    /// <param name="position">目标位置</param>
    /// <param name="rotation">目标旋转</param>
    /// <param name="duration">时长</param>
    public void Focus(Vector3 position, Vector3 rotation, float duration);
  5. 活动区域限制

    通过启用 IsRangeClamped 来实现活动范围的限制。

    通过设置 xMinValue...zMaxValue 调整活动范围,绿色线条形成的区域即活动的范围,相机运动不会超出该区域。