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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了