• 大小: 27.28MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-07
  • 语言: 其他
  • 标签: Unity3D  摇杆  UGUI  

资源简介

【Unity】UGUI超级简单的摇杆制作,摇杆控制物体移动!!!!!!!!!!!!!

资源截图

代码片段和文件信息

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;

/// 
/// time:2018/12/2
/// author:King.Sun
/// description:摇杆控制器
/// 

public class JoyStick : MonoBehaviour
{
/// 
/// 摇杆背景
/// 

private Transform _joyBg;
/// 
/// 遥感中心
/// 

private Transform _joyCenter;
/// 
/// 摇杆半径
/// 

private float _radius;
/// 
/// 移动中心
/// 

private Vector2 _moveCenter;
/// 
/// 鼠标到终点的向量
/// 

private Vector2 _mouseToCenterVect;
/// 
/// 鼠标到中心点的距离
/// 

private float _mouseToCenterDistance;
/// 
/// 水平获取值
/// 

private float _hor;
/// 
/// 垂直获取值
/// 

private float _ver;
/// 
/// 旋转角度
/// 

private float _rotAngle;
/// 
/// 主角
/// 

private Transform _player;
/// 
/// 目标朝向
/// 

private Vector3 _forwardTarget;

// Use this for initialization
void Start ()
{

_joyBg = Gameobject.Find(“Canvas“).transform.Find(“JoyBg“);
_joyCenter = Gameobject.Find(“Canvas“).transform.Find(“JoyBg/JoyCenter“);
_player = Gameobject.Find(“Player“).transform;
_radius = 100;
}

private void Update()
{
//只有在水平或者垂直值大于0的情况下,主角才移动或旋转
if (Math.Abs(_hor) > 0||Math.Abs(_ver) > 0)
{
//Mathf.Clamp(_mouseToCenterDistance/10001):根据摇杆中心的移动距离太判断速度
//new Vector3(000.1f*Mathf.Clamp(_mouseToCenterDistance/10001)):在Z轴方向上移动Mathf.Clamp(_mouseToCenterDistance/10001)的距离
//不停地在Z轴方向上移动Mathf.Clamp(_mouseToCenterDistance/10001)的距离
_player.position += _player.TransformDirection(new Vector3(000.1f*Mathf.Clamp(_mouseToCenterDistance/10001)));
//根据摇杆的旋转设置主角的朝向
_player.forward = _forwardTarget;

}
}

/// 
/// 开始拖动
/// 

public void ondragBegain()
{
//移动中心点赋值
_moveCenter = Input.mousePosition;
//显示摇杆
_joyBg.gameobject.SetActive(true);
//摇杆背景位置修正到点击位置
_joyBg.position = _moveCenter;
//摇杆中心位置修正到点击位置
_joyCenter.position = _moveCenter;
}

/// 
/// 正在拖动
/// 

public void ondragMove()
{
//中心店到触摸点的向量赋值
_mouseToCenterVect = (Vector2)Input.mousePosition - _moveCenter;
//中心店到触摸点的距离计算
_mouseToCenterDistance = _mouseToCenterVect.magnitude;
//根据距离来判断摇杆中心的位置
if (_mouseToCenterDistance < _radius)
{
//若是距离小于最大半径,这里取向量的归一值,就是模为1的向量,乘上中心到触摸点的距离,这个就是摇杆中心应该移动的方向和距离,并且移动是在移动中心的基础上,所以加上移动中心的坐标
_joyCenter.position = _mouseToCenterVect.normalized * _mouseToCenterDistance + _moveCenter;
}
else
{
//同上,不过就是限定了移动的最大距离
_joyCenter.position = _mouseToCenterVect.normalized * _radius + _moveCenter;
}
//摇杆中心的X - 移动中心的x就是水平的变化值,这里 /100 控制_hor在(-1,1)之间
_hor = (_joyCenter.position.x - _moveCenter.x)/100;
//摇杆中心的Y - 移动中心的Y就是垂直的变化值,

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-01 23:35  JoyStick\
     目录           0  2018-12-01 15:13  JoyStick\.idea\
     目录           0  2018-12-01 15:17  JoyStick\.idea\.idea.JoyStic\
     目录           0  2018-12-02 01:57  JoyStick\.idea\.idea.JoyStic\.idea\
     文件        2407  2018-12-01 21:57  JoyStick\.idea\.idea.JoyStic\.idea\contentModel.xml
     文件         210  2018-12-01 15:17  JoyStick\.idea\.idea.JoyStic\.idea\indexLayout.xml
     文件         309  2018-12-01 15:17  JoyStick\.idea\.idea.JoyStic\.idea\modules.xml
     文件       21891  2018-12-02 01:57  JoyStick\.idea\.idea.JoyStic\.idea\workspace.xml
     文件         256  2018-12-01 15:17  JoyStick\.idea\.idea.JoyStic\riderModule.iml
     文件       20647  2018-12-01 23:35  JoyStick\Assembly-CSharp.csproj
     目录           0  2018-12-02 01:59  JoyStick\Assets\
     文件        2026  2018-12-01 21:54  JoyStick\Assets\Head.mat
     文件         188  2018-12-01 20:26  JoyStick\Assets\Head.mat.meta
     文件        4659  2018-12-02 01:57  JoyStick\Assets\JoyStick.cs
     文件         243  2018-12-01 15:12  JoyStick\Assets\JoyStick.cs.meta
     文件        2022  2018-12-01 21:54  JoyStick\Assets\Mat.mat
     文件         188  2018-12-01 20:20  JoyStick\Assets\Mat.mat.meta
     目录           0  2018-12-01 15:31  JoyStick\Assets\Plugins\
     目录           0  2018-12-01 15:31  JoyStick\Assets\Plugins\Editor\
     目录           0  2018-12-01 15:31  JoyStick\Assets\Plugins\Editor\JetBrains\
     文件     1342464  2018-09-13 16:34  JoyStick\Assets\Plugins\Editor\JetBrains\JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
     文件         569  2018-12-01 15:31  JoyStick\Assets\Plugins\Editor\JetBrains\JetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
     文件         172  2018-12-01 15:31  JoyStick\Assets\Plugins\Editor\JetBrains.meta
     文件         172  2018-12-01 15:31  JoyStick\Assets\Plugins\Editor.meta
     文件         172  2018-12-01 15:31  JoyStick\Assets\Plugins.meta
     目录           0  2018-12-02 01:57  JoyStick\Assets\Scenes\
     文件       26877  2018-12-02 01:57  JoyStick\Assets\Scenes\SampleScene.unity
     文件         155  2018-07-25 02:00  JoyStick\Assets\Scenes\SampleScene.unity.meta
     文件         172  2018-07-25 02:00  JoyStick\Assets\Scenes.meta
     文件         172  2018-12-01 21:54  JoyStick\Assets\UnityChan.meta
     文件       28799  2017-10-10 20:37  JoyStick\Assets\摇杆底板.png
............此处省略1838个文件信息

评论

共有 条评论