随笔 - 16,  文章 - 0,  评论 - 0,  阅读 - 9836

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor.UI;
using UnityEngine.EventSystems;

 

 

public class Joystick : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{


[Header("摇杆的可移动半径")]
public float JoystickMoveRadius = 85;


/// <summary>
/// 摇杆的初始位置
/// </summary>
private Vector3 originalPos;

//摇杆移动的距离
private float MoveDistance;

//圆心指向鼠标位置的向量
private Vector3 dir;

private void Start()
{

//获取中心点
originalPos = transform.position;

}
public void OnBeginDrag(PointerEventData eventData)
{
//鼠标开始拖动事件
}

public void OnDrag(PointerEventData eventData)
{

//拖动中
//计算鼠标与远点的距离
MoveDistance = Vector3.Distance(Input.mousePosition, originalPos);

if(MoveDistance<JoystickMoveRadius)    //当鼠标位置小于移动半径
{

transform.position = Input.mousePosition;

}
else   当鼠标位置大于移动半径
{

//求鼠标方向的向量
dir = Input.mousePosition - originalPos;
//求圆心指向摇盖位置的向量
transform.position = dir.normalized * JoystickMoveRadius + originalPos;

}

}

public void OnEndDrag(PointerEventData eventData)
{

//拖动事件结束,摇杆返回中心点位置
transform.position = originalPos;
}

 

}

posted on   月光之下  阅读(99)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示