unity摇杆控制(通用)

想控制物体移动只需再在移动代码里判断h,v是否为0,如果不为0则将物体移动的h等于遥感代码里的h,v等于v

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

public class UIRocker : MonoBehaviour, IDragHandler, IEndDragHandler
{
    public static float h;
    public static float v;
    //图标移动最大半径  
    public float maxRadius = 50;
    //初始化背景图标位置  
    private Vector2 moveBackPos;


    // Use this for initialization  
    void Start()
    {
        //初始化背景图标位置  
        moveBackPos = transform.parent.transform.position;
    }


    /// <summary>  
    /// 当鼠标开始拖拽时  
    /// </summary>  
    /// <param name="eventData"></param>  
    public void OnDrag(PointerEventData eventData)
    {
        h = transform.localPosition.x / 70;
        v = transform.localPosition.y / 70;
        //获取鼠标位置与初始位置之间的向量  
        Vector2 oppsitionVec = eventData.position - moveBackPos;
        //获取向量的长度  
        float distance = Vector3.Magnitude(oppsitionVec);
        //最小值与最大值之间取半径  
        float radius = Mathf.Clamp(distance, 0, maxRadius);
        //限制半径长度  
        transform.position = moveBackPos + oppsitionVec.normalized * radius;


    }


    /// <summary>  
    /// 当鼠标停止拖拽时  
    /// </summary>  
    /// <param name="eventData"></param>  
    public void OnEndDrag(PointerEventData eventData)
    {
        transform.position = moveBackPos;
        h = 0; v = 0;//在物体移动代码里判断,如果不为0将值赋给移动好h,v

    }

}

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值