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 2022-01-22 23:50  月光之下  阅读(123)  评论(0)    收藏  举报