资源简介
【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.xm
文件 210 2018-12-01 15:17 JoyStick\.idea\.idea.JoyStic\.idea\indexLayout.xm
文件 309 2018-12-01 15:17 JoyStick\.idea\.idea.JoyStic\.idea\modules.xm
文件 21891 2018-12-02 01:57 JoyStick\.idea\.idea.JoyStic\.idea\workspace.xm
文件 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.me
文件 4659 2018-12-02 01:57 JoyStick\Assets\JoyStick.cs
文件 243 2018-12-01 15:12 JoyStick\Assets\JoyStick.cs.me
文件 2022 2018-12-01 21:54 JoyStick\Assets\Mat.mat
文件 188 2018-12-01 20:20 JoyStick\Assets\Mat.mat.me
目录 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.me
文件 172 2018-12-01 15:31 JoyStick\Assets\Plugins\Editor\JetBrains.me
文件 172 2018-12-01 15:31 JoyStick\Assets\Plugins\Editor.me
文件 172 2018-12-01 15:31 JoyStick\Assets\Plugins.me
目录 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.me
文件 172 2018-07-25 02:00 JoyStick\Assets\Scenes.me
文件 172 2018-12-01 21:54 JoyStick\Assets\UnityChan.me
文件 28799 2017-10-10 20:37 JoyStick\Assets\摇杆底板.png
............此处省略1838个文件信息
相关资源
- Unity3D 连连看游戏161883
- Unity3D 连连看游戏
- CharacterControls
- UNITY3d类似LOL5v5地图
- Unity3D RPG角色扮演游戏 源代码下
- 飞机大战-unity3d源码
- unity3d 跑酷游戏的源代码
- Unity 2D 游戏开发教程
- Unity3D网络游戏实战
- unity3d联网斗地主服务端+客户端
- Obi Fluidv4.0.1+Obi Cloth 4.0.1
- 3D Infinite Runner Toolkit
- untiy3d 简单td防守+射击游戏
- Unity3D树木、地皮贴图
- 用Unity3d做一个魔方
- Unity 2018 Shaders and Effects Cookbook 3rd Ed
- 关于Unity3D脚本的800个教程合集完整版
- mega fiers 3.49
- unity3D战争塔防源码.zip
- unity贪吃蛇游戏
- [Unity3D] R-Life0.8完美存档、全解锁教程
- unity3d 怪物AI智能攻击源码
- EasyTouch 5
- 太空大战unity3D学习
- 一款Unity3D写的汽车游戏
- NonCoverPolygon.rar
- u3d疯狂击球小游戏
- Easy Touch 5 5.0.18 最新版
- 微信飞机大战unity3D项目
- unity3d超漂亮的动态天空盒 风吹树动效
评论
共有 条评论