unity 摇杆

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    public Rocker rocker;
    public new Rigidbody rigidbody;
    public float speed;
    Vector2 offset;
    private void Awake()
    {
        rocker.Radius = 100;
        rocker.onDrag = OnMove;
        rocker.onEndDrag = () => { offset = Vector3.zero; };
    }

    private void LateUpdate()
    {
        rigidbody.velocity = new Vector3(offset.x,0, offset.y)*speed;
    }

    void OnMove(Vector2 vector)
    {
        offset = vector;
    }
}

 

 

using System;
using UnityEngine;
using UnityEngine.EventSystems;

public class Rocker : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
    public Action<Vector2> onBegin;
    public Action<Vector2> onDrag;
    public Action onEndDrag;

    float min = 0;
    float max;
    float radius;
    float distance;
    Vector2 start;
    Vector2 offset;
    Vector2 normalization;

    public float Radius
    {
        get
        {
            return radius;
        }
        set
        {
            radius = value;
            max = radius;
            distance = max - min;
        }
    }

    void IEndDragHandler.OnEndDrag(PointerEventData eventData)
    {
        onEndDrag?.Invoke();
    }

    void IBeginDragHandler.OnBeginDrag(PointerEventData eventData)
    {
        start = eventData.position;
        onBegin?.Invoke(start);
    }

    void IDragHandler.OnDrag(PointerEventData eventData)
    {
        offset = eventData.position - start;
        normalization = new Vector2((offset.x - min) / distance, (offset.y - min) / distance);
        normalization.Set(Mathf.Clamp(normalization.x, -1, 1), Mathf.Clamp(normalization.y, -1, 1));
        onDrag?.Invoke(normalization);
    }
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小鱼游戏开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值