【Unity】Unity3D 车位售卖系统制作实例(一)系统介绍及相机控制器


系统功能介绍

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

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

在这里插入图片描述

停车场全景展现

初始化设置

建立Res文件夹,将车位原始jpg图片放入文件夹内。
在这里插入图片描述

选中图片,查看Inspector,将Texture Type修改为Sprite(2D and UI)。
在这里插入图片描述

建立空GameObject,在其下创建2D Object --> Sprite,并命名为background。
在这里插入图片描述
在这里插入图片描述

将Rotation X设置为90。
在这里插入图片描述

相机设置

将相机默认的天空盒改为纯色,将视角X旋转90°,并将Y轴高度调整到66。
在这里插入图片描述

相机管理器

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

扫描二维码关注公众号,回复: 15904427 查看本文章
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画布。
在这里插入图片描述

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

将我们写好的CameraController组件添加到Canvas上。
在这里插入图片描述

将DragSpeed设置为1。
在这里插入图片描述
至此,相机控制器的配置就完成了。

运行游戏,试试拖拽和缩放功能。
在这里插入图片描述
还可以,操作很丝滑。


更多内容请查看总目录【Unity】Unity学习笔记目录整理

猜你喜欢

转载自blog.csdn.net/xiaoyaoACi/article/details/125425995