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.ideacontentModel.xml
     文件         210  2018-12-01 15:17  JoyStick.idea.idea.JoyStic.ideaindexLayout.xml
     文件         309  2018-12-01 15:17  JoyStick.idea.idea.JoyStic.ideamodules.xml
     文件       21891  2018-12-02 01:57  JoyStick.idea.idea.JoyStic.ideaworkspace.xml
     文件         256  2018-12-01 15:17  JoyStick.idea.idea.JoyStic
iderModule.iml
     文件       20647  2018-12-01 23:35  JoyStickAssembly-CSharp.csproj
     目录           0  2018-12-02 01:59  JoyStickAssets
     文件        2026  2018-12-01 21:54  JoyStickAssetsHead.mat
     文件         188  2018-12-01 20:26  JoyStickAssetsHead.mat.meta
     文件        4659  2018-12-02 01:57  JoyStickAssetsJoyStick.cs
     文件         243  2018-12-01 15:12  JoyStickAssetsJoyStick.cs.meta
     文件        2022  2018-12-01 21:54  JoyStickAssetsMat.mat
     文件         188  2018-12-01 20:20  JoyStickAssetsMat.mat.meta
     目录           0  2018-12-01 15:31  JoyStickAssetsPlugins
     目录           0  2018-12-01 15:31  JoyStickAssetsPluginsEditor
     目录           0  2018-12-01 15:31  JoyStickAssetsPluginsEditorJetBrains
     文件     1342464  2018-09-13 16:34  JoyStickAssetsPluginsEditorJetBrainsJetBrains.Rider.Unity.Editor.Plugin.Repacked.dll
     文件         569  2018-12-01 15:31  JoyStickAssetsPluginsEditorJetBrainsJetBrains.Rider.Unity.Editor.Plugin.Repacked.dll.meta
     文件         172  2018-12-01 15:31  JoyStickAssetsPluginsEditorJetBrains.meta
     文件         172  2018-12-01 15:31  JoyStickAssetsPluginsEditor.meta
     文件         172  2018-12-01 15:31  JoyStickAssetsPlugins.meta
     目录           0  2018-12-02 01:57  JoyStickAssetsScenes
     文件       26877  2018-12-02 01:57  JoyStickAssetsScenesSampleScene.unity
     文件         155  2018-07-25 02:00  JoyStickAssetsScenesSampleScene.unity.meta
     文件         172  2018-07-25 02:00  JoyStickAssetsScenes.meta
     文件         172  2018-12-01 21:54  JoyStickAssetsUnityChan.meta
     文件       28799  2017-10-10 20:37  JoyStickAssets摇杆底板.png
............此处省略1838个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)