文章目录

  • 系统功能介绍
  • 停车场全景展现
  • 初始化设置
  • 相机设置
  • 相机管理器
  • 使用方法



系统功能介绍

本系统为某停车场提供售卖相关功能。其主要功能有停车场全景展现;车位出售状态显示;车位查询;车位购买等功能。

停车场全景展现: 展现停车场平面图,并实现拖拽以及放大缩小功能。
车位出售状态显示: 按照车位不同状态展示车位出售信息,已售车位锁定、未售车位鼠标悬停高亮显示等。
车位查询功能: 提供车位查询框,通过输入车位编号将相机焦点移至相应车位,并高亮显示。
车位购买功能: 提供车位购买相应菜单按钮,并提供车位的出售功能菜单并提供本地数据记录功能,以及后续的远程数据记录功能。
系统基本功能: 提供退出系统功能。

unity商店模型在哪_拖拽

停车场全景展现

初始化设置

建立Res文件夹,将车位原始jpg图片放入文件夹内。

unity商店模型在哪_游戏引擎_02

选中图片,查看Inspector,将Texture Type修改为Sprite(2D and UI)。

unity商店模型在哪_unity商店模型在哪_03

建立空GameObject,在其下创建2D Object --> Sprite,并命名为background。

unity商店模型在哪_游戏引擎_04


unity商店模型在哪_unity_05

将Rotation X设置为90。

unity商店模型在哪_游戏引擎_06

相机设置

将相机默认的天空盒改为纯色,将视角X旋转90°,并将Y轴高度调整到66。

unity商店模型在哪_游戏引擎_07

相机管理器

相机管理器主要提供主相机的拖拽及缩放功能,代码如下:

using System;
using UnityEngine;
using UnityEngine.EventSystems;

namespace y7play
{
    /// <summary>
    /// 相机控制类
    /// 用于控制主相机的拖拽、放大缩小等操作
    /// </summary>
    public class CameraController : MonoBehaviour, IDragHandler
	{
		public float dragSpeed;
		private Vector3 p1;
		private Vector3 camera_right;
		private Vector3 camera_up;

		public void Awake()
		{
			camera_right = Camera.main.transform.right;
			camera_up = Camera.main.transform.up;
		}
		public void OnDrag(PointerEventData eventData)
		{
			p1 = Camera.main.transform.position
                        - camera_right * Input.GetAxisRaw("Mouse X") * dragSpeed * Time.timeScale * Camera.main.fieldOfView / 50
                        - camera_up * Input.GetAxisRaw("Mouse Y") * dragSpeed * Time.timeScale * Camera.main.fieldOfView / 50;
            
            // 判断界面边界,防止拖拽出屏幕范围
            if (Math.Abs(p1.x) < 100 && Math.Abs(p1.z) < 60)
            {
			    Camera.main.transform.position = p1;
            }
		}

        void Update()
        {
            // 鼠标滚轮的效果
            // 缩小
            if (Input.GetAxis("Mouse ScrollWheel") < 0)
            {
                if (Camera.main.fieldOfView <= 55)
                    Camera.main.fieldOfView += 2;
            }
            // 放大
            if (Input.GetAxis("Mouse ScrollWheel") > 0)
            {
                if (Camera.main.fieldOfView > 20)
                    Camera.main.fieldOfView -= 2;
            }
        }
    }
}

OnDrag方法用于计算拖拽偏移,dragSpeed用于外部设置拖拽速度,Camera.main.fieldOfView / 50用于在放大状态下使拖拽更平滑跟手。if判断用于确定屏幕边界,避免拖拽到屏幕范围外。

Update方法中主要实现了缩放功能,通过滚轮调整相机FOV视角。

使用方法

创建UI画布。

unity商店模型在哪_拖拽_08

在画布下创建Image,将画布大小放大,这个图片的大小将决定拖拽范围。

unity商店模型在哪_游戏开发_09

将我们写好的CameraController组件添加到Canvas上。

unity商店模型在哪_unity商店模型在哪_10

将DragSpeed设置为1。

unity商店模型在哪_游戏开发_11


至此,相机控制器的配置就完成了。运行游戏,试试拖拽和缩放功能。


还可以,操作很丝滑。