如何摇杆操作?


    public EventTrigger et;
    public RectTransform ImgJoy;
    public MoveFiniteState TPUC;
    public float size = 120.0f;

    public void SetPerson(MoveFiniteState tpuc)
    {
        TPUC = tpuc;
    }
    void Start()
    {
        //为摇杆注册事件
        //拖动中
        EventTrigger.Entry en = new EventTrigger.Entry();
        en.eventID = EventTriggerType.Drag;
        en.callback.AddListener(OnDrag);
        et.triggers.Add(en);

        //结束拖动
        en = new EventTrigger.Entry();
        en.eventID = EventTriggerType.EndDrag;
        en.callback.AddListener(EndOnDrag);
        et.triggers.Add(en);
    }
    private void OnDrag(BaseEventData data)
    {
        //摇杆移动的坐标
        Vector2 NowPos;
        PointerEventData pointer = data as PointerEventData;
        //以前是通过加上鼠标偏移位置 让图标动起来

        RectTransformUtility.ScreenPointToLocalPointInRectangle(
            ImgJoy.parent as RectTransform,
            pointer.position,
            pointer.enterEventCamera,
            out NowPos
            );
        ImgJoy.localPosition = NowPos;

        //我们有专门的参数  得到相对于锚点的点,这里的120是指Joy中心点距离外圆的边缘距离 防止摇杆出去
        if (ImgJoy.anchoredPosition.magnitude > size)
        {
            //拉回来
            //单位向量 * 长度 = 临界长度
            ImgJoy.anchoredPosition = ImgJoy.anchoredPosition.normalized * size;
        }
        MoveFiniteState.instance.SetHV(ImgJoy.anchoredPosition.x,ImgJoy.anchoredPosition.y);
        //让玩家移动
    }

    private void EndOnDrag(BaseEventData data)
    {
        ImgJoy.anchoredPosition = Vector2.zero;
        MoveFiniteState.instance.SetHV(0, 0);
        //停止移动 
    }
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值