区域摇杆制作

2023-12-25 04:36
文章标签 区域 制作 摇杆

本文主要是介绍区域摇杆制作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

区域摇杆

  • 介绍
  • 界面制作
  • 脚本
  • 总结

介绍

我之前讲过摇杆,那么看到现在游戏做区域摇杆的更多一些,那么我们来剖析一下。说白了区域摇杆就是在之前固定摇杆的基础上增加了一个启动事件,当我们开始拖拽的时候,我们将摇杆现实启动然后位置是按照开始拖拽的位置来进行摇杆中心点的移动,然后当停止拖拽时,则摇杆就回到原来位置并且隐藏。说白了就是启动事件 + 固定摇杆的显示隐藏位置变换就是区域摇杆,下面我会把我的做法讲一下,如果有更好的方法可以跟我说下。

请添加图片描述

界面制作

我这里做的是1920 * 1080的如果进入拖拽不准确,可以设置成1920 * 1080的分辨率
在这里插入图片描述

最外层是一个铺满的Image,这里主要用于接收拖拽使用
在这里插入图片描述

这里创建一个背景底板,大小根据自己需要调整,这里我设置的长款都是200,居中展示界面即可

在这里插入图片描述
在创建一个中心的拖拽点,这里大小我设置的80,中心居中即可
在这里插入图片描述
将底板和中心拖拽的点直接隐藏即可

脚本

该脚本挂载到拖拽中心上
在这里插入图片描述

原理就不讲了,可以看看我之前的普通摇杆文章,这个脚本是改动过的普通摇杆脚本

Joystick.cs

using UnityEngine;
using UnityEngine.EventSystems;public class Joystick : MonoBehaviour
{/// <summary>/// 最大距离/// </summary>private float m_maxDis = 100;/// <summary>/// 初始位置/// </summary>private Vector2 m_originalPos;/// <summary>/// 当前半径/// </summary>private float m_radius;/// <summary>/// 底板背景/// </summary>[SerializeField]private GameObject m_joystick_bg;// Use this for initializationvoid Start(){m_originalPos = transform.position;m_maxDis = m_joystick_bg.GetComponent<RectTransform>().sizeDelta.x / 2;}#region UI相关/// <summary>/// 初始设置/// </summary>public void InitSet(Vector2 pos){ShowUI(true);m_joystick_bg.transform.position = pos;transform.position = pos;m_originalPos = pos;}/// <summary>/// UI设置/// </summary>/// <param name="isShow"></param>public void ShowUI(bool isShow){if (!m_joystick_bg) return;m_joystick_bg.gameObject.SetActive(isShow);gameObject.SetActive(isShow);}#endregion#region 滑动事件public void OnDrag(PointerEventData eventData){//偏移量Vector2 dir = eventData.position - m_originalPos;//获取向量长度float distance = Vector3.Magnitude(dir);//获取当前m_radius = Mathf.Clamp(distance, 0, m_maxDis);//位置赋值transform.position = dir.normalized * m_radius + m_originalPos;}public void OnEndDrag(PointerEventData eventData){transform.position = m_originalPos;}#endregion}

这个才是真正拖拽的拖拽事件具体逻辑
TouchMoveArea.cs
挂载到最外层上并且持有摇杆
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;public class TouchMoveArea : MonoBehaviour, IPointerDownHandler, IPointerUpHandler, IEndDragHandler, IDragHandler
{/// <summary>/// 摇杆/// </summary>public Joystick m_joy;#region 滑动事件public void OnDrag(PointerEventData eventData){if (!m_joy) return;m_joy.OnDrag(eventData);}public void OnEndDrag(PointerEventData eventData){if (!m_joy) return;m_joy.OnEndDrag(eventData);}#endregion#region 按下抬起事件public void OnPointerDown(PointerEventData eventData){m_joy.InitSet(eventData.position);}public void OnPointerUp(PointerEventData eventData){m_joy.ShowUI(false);}#endregion
}

总结

TouchMoveArea才是真正的摇杆事件,这个脚本触发的所有事件在自身调用Joystick的对应开始拖拽、拖拽中、拖拽结束事件,只是做了一个偏差

如果有不理解的可以到我的资源库中下载看看MoveAreaJoySticks

这篇关于区域摇杆制作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/534279

相关文章

用Unity2D制作一个人物,实现移动、跳起、人物静止和动起来时的动画:中(人物移动、跳起、静止动作)

上回我们学到创建一个地形和一个人物,今天我们实现一下人物实现移动和跳起,依次点击,我们准备创建一个C#文件 创建好我们点击进去,就会跳转到我们的Vision Studio,然后输入这些代码 using UnityEngine;public class Move : MonoBehaviour // 定义一个名为Move的类,继承自MonoBehaviour{private Rigidbo

OpenStack离线Train版安装系列—0制作yum源

本系列文章包含从OpenStack离线源制作到完成OpenStack安装的全部过程。 在本系列教程中使用的OpenStack的安装版本为第20个版本Train(简称T版本),2020年5月13日,OpenStack社区发布了第21个版本Ussuri(简称U版本)。 OpenStack部署系列文章 OpenStack Victoria版 安装部署系列教程 OpenStack Ussuri版

OpenStack镜像制作系列5—Linux镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

OpenStack镜像制作系列4—Windows Server2019镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录  CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系

OpenStack镜像制作系列2—Windows7镜像

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作系列

OpenStack镜像制作系列1—环境准备

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows10镜像 OpenStack镜像制作系列4—Windows Server2019镜像 OpenStack镜像制作

CSDN:OpenStack镜像制作教程指导(全)

本系列文章主要对如何制作OpenStack镜像的过程进行描述记录,涉及基本环境准备、常见类型操作系统的镜像制作。 让你可以从零开始安装一个操作系统,并支持个性化制作OpenStack镜像。 CSDN:OpenStack镜像制作教程指导(全) OpenStack镜像制作系列1—环境准备 OpenStack镜像制作系列2—Windows7镜像 OpenStack镜像制作系列3—Windows

docker学习系列(四)制作基础的base项目镜像--jdk+tomcat

前面已经完成了docker的安装以及使用,现在我们要将自己的javaweb项目与docker结合 1.1准备jdk+tomcat软件 ​​我下载了apache-tomcat-7.0.68.tar.gz和jdk-7u79-linux-x64.tar.gz,存储于Linux机器的本地目录/usr/ect/wt/下(利用xshell上传)。利用linux命令 tar -zxvf apache-tom

YOLOv8/v10+DeepSORT多目标车辆跟踪(车辆检测/跟踪/车辆计数/测速/禁停区域/绘制进出线/绘制禁停区域/车道车辆统计)

01:YOLOv8 + DeepSort 车辆跟踪 该项目利用YOLOv8作为目标检测模型,DeepSort用于多目标跟踪。YOLOv8负责从视频帧中检测出车辆的位置,而DeepSort则负责关联这些检测结果,从而实现车辆的持续跟踪。这种组合使得系统能够在视频流中准确地识别并跟随特定车辆。 02:YOLOv8 + DeepSort 车辆跟踪 + 任意绘制进出线 在此基础上增加了用户