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;
}
}
浙公网安备 33010602011771号