游戏蛮牛学习群(纯技术交流,不闲聊):539178957
新宝娱乐城博彩打不开 手机端
开发者专栏

关注:2263

当前位置:新宝娱乐城博彩打不开 技术专区 开发者专栏

__________________________________________________________________________________
开发者干货区版块规则:

  1、文章必须是图文形式。(至少2幅图)
      2、文章字数必须保持在1500字节以上。(编辑器右下角有字数检查)
      3、本版块只支持在游戏蛮牛原创首发,不支持转载。
      4、本版块回复不得无意义,如:顶、呵呵、不错......【真的会扣分的哦】
      5、......
__________________________________________________________________________________
查看: 847|回复: 63
发新帖

新宝娱乐城龙虎打不开: [菠萝哥哥] 游戏开发 之 MMORPG摇杆功能 - lua

[复制链接]  [移动端链接]
排名
550
昨日变化

新宝娱乐城博彩打不开 www.sl6cl.com.cn 18

主题

331

帖子

2293

积分

Rank: 9Rank: 9Rank: 9

UID
13110
好友
12
蛮牛币
4896
威望
0
注册时间
2014-1-21
在线时间
584 小时
最后登录
2018-7-25

专栏作家认证开发者

跳转到指定楼层
楼主

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 菠萝哥哥 于 2018-7-23 18:51 编辑
因为游戏需要热更新,所以要用Lua实现功能,这就很蛋疼(ToLua)


界面 - 摇杆是不固定位置的



目录结构
m_ResponseRegion_btn  在区域内点击 摇杆底盘会飞到点击位置 继续拖拽
m_Direction_btn              是底盘

m_Ride_btn                     摇杆   还要支持点击上马功能



策略就是 c#只负责发送事件 ,lua接受事件 并做逻辑处理.

c# 方面
m_ResponseRegion_btn 绑定 UIJoystackArea.cs 脚本
[C#] 纯文本查看 复制代码
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;

namespace UISystem
{
    public class UIJoystackArea : MonoBehaviour, IDragHandler, IPointerDownHandler, IPointerUpHandler
    {
        public UIJoystack m_UIJoystack;

        public void OnDrag(PointerEventData data)
        {
            m_UIJoystack.OnDrag(data);
        }

        public void OnPointerUp(PointerEventData data)
        {
            m_UIJoystack.OnPointerUp2(data);
        }

        public void OnPointerDown(PointerEventData data)
        {
            m_UIJoystack.OnPointerDown2(data,this.gameObject);
        }
    }
}



m_Ride_btn   绑定  UIJoystack.cs 脚本
游客,如果您要查看本帖隐藏内容请回复




c# 发送事件后 lua方面

[Golang] 纯文本查看 复制代码
using UnityEngine;
using UnityEngine.EventSystems;

namespace UISystem
{
    public class UIJoystack :  MonoBehaviour, IPointerClickHandler, IPointerDownHandler, IDragHandler, IEndDragHandler, IBeginDragHandler
    {
        private const string UI_EVENT_JOYSTACK_ON_DRAGING = "UI_EVENT_JOYSTACK_ON_DRAGING";
        private const string UI_EVENT_JOYSTACK_BEGIN_DRAG = "UI_EVENT_JOYSTACK_BEGIN_DRAG";
        private const string UI_EVENT_JOYSTACK_END_DRAG = "UI_EVENT_JOYSTACK_END_DRAG";
        private const string UI_EVENT_JOYSTACK_Click = "UI_EVENT_JOYSTACK_Click";

        //底盘初始位置
        private Vector2 BoderInitialPos;
        //底盘半径
        public float Raidus = 0.0f;
        //底盘
        public RectTransform boder;

        //拖动数据
        private Vector2 _dragdata;         

        //摇杆初始位置
        private Vector3 OriginPos;

        public Vector3 Dir;
        //事件
        public delegate void OnEventHandler(string eventId, float x, float y, float z);
        public OnEventHandler onJoystackEventHandler = null;

        private bool isDrag = false;
        private bool isClick = true;

        public void SetEventHandler(OnEventHandler handler)
        {
            onJoystackEventHandler = handler;
        }

        private void SendEvent(string eventID, Vector3 dir)
        {
            if (this.onJoystackEventHandler != null)
            {
                this.onJoystackEventHandler(eventID, dir.x, dir.y, dir.z);
            }
        }

        public void Start()
        {
            OriginPos = transform.localPosition;
            Raidus = boder.sizeDelta.x / 2;
            BoderInitialPos = boder.localPosition;
        }

        public void OnDisable()
        {
            transform.localPosition = OriginPos;
            Dir = Vector3.zero;
            if (isDrag)
            {
                SendEvent("UI_EVENT_JOYSTACK_END_DRAG", Dir);
            }
        }

        /// <summary>
        /// 拖动
        /// </summary>
        /// <param name="data"></param>
        public void OnDrag(PointerEventData data)
        {
            isClick = false;
            _dragdata += data.delta;
            Drag(_dragdata);
            SendEvent("UI_EVENT_JOYSTACK_ON_DRAGING", Dir);
        }

        public void Drag(Vector2 data)
        {
            transform.localPosition = OriginPos + new Vector3(data.x, data.y, 0);
            var distance = Vector3.Distance(transform.localPosition, OriginPos);
            if (distance > Raidus)
            {
                transform.localPosition = Vector3.Lerp(OriginPos, transform.localPosition, Raidus / distance);
            }
            Dir = (transform.localPosition - OriginPos).normalized;
        }

        /// <summary>
        /// 摇杆被点击
        /// </summary>
        /// <param name="data"></param>
        public void OnPointerClick(PointerEventData data)
        {
            if (isClick == false)
            {
                return;
            }
            Dir = Vector3.zero;
            //SendEvent("UI_EVENT_JOYSTACK_END_DRAG", Dir);
            SendEvent(UI_EVENT_JOYSTACK_Click, Dir);          
        }

        /// <summary>
        /// 底盘位移按下-开始拖动
        /// </summary>
        /// <param name="data"></param>
        public void OnPointerDown2(PointerEventData data,GameObject go)
        {
            isDrag = true;
            _dragdata = Vector2.zero;
     
            Vector2 pos;
            if (RectTransformUtility.ScreenPointToLocalPointInRectangle(go.transform as RectTransform,
                data.position, data.pressEventCamera, out pos))
            {
                boder.localPosition = pos;
            }
            SendEvent("UI_EVENT_JOYSTACK_BEGIN_DRAG", Dir);
        }

        /// <summary>
        /// 开始拖动
        /// </summary>
        /// <param name="data"></param>
        public void OnPointerDown(PointerEventData data)
        {
            //isDrag = true;
            //_dragdata = Vector2.zero;
            //SendEvent("UI_EVENT_JOYSTACK_BEGIN_DRAG", Dir);
        }

        /// <summary>
        /// 底盘位移抬起
        /// </summary>
        /// <param name="eventData"></param>
        public void OnPointerUp2(PointerEventData eventData)
        {
            //Debug.LogError("1 - OnPointerUp");
            boder.gameObject.transform.localPosition = BoderInitialPos;
            transform.localPosition = OriginPos;
            isDrag = false;
            isClick = true;
            SendEvent("UI_EVENT_JOYSTACK_END_DRAG", Dir);
        }

        /// <summary>
        /// 结束拖动
        /// </summary>
        /// <param name="eventData"></param>
        public void OnEndDrag(PointerEventData data)
        {
            //Debug.LogError("2 - OnEndDrag");
            transform.localPosition = OriginPos;
            isDrag = false;
            isClick = true;
            SendEvent("UI_EVENT_JOYSTACK_END_DRAG", Dir)
        }

        public void OnBeginDrag(PointerEventData data)
        {
            //transform.localPosition = OriginPos;
            isDrag = true;
            isClick = false;
            _dragdata = Vector2.zero;
            SendEvent("UI_EVENT_JOYSTACK_BEGIN_DRAG", Dir);
        }

    }
}



事件调用4个方法
[Golang] 纯文本查看 复制代码
local JoyEventHandler =
{
    ["UI_EVENT_JOYSTACK_BEGIN_DRAG"] = UIMainPanel_m_JoyStack_BeginDrag,  //开始拖动
    ["UI_EVENT_JOYSTACK_ON_DRAGING"] = UIMainPanel_m_JoyStack_Draging,    
    ["UI_EVENT_JOYSTACK_END_DRAG"] = UIMainPanel_m_JoyStack_EndDrag,     //停止拖动   
    ["UI_EVENT_JOYSTACK_Click"] = UIMainPanel_PlayerMount,                 //点击上马
}

function UIMainPanel_Controller_JoyStackEvent(eventID,x , y, z)
    if JoyEventHandler[eventID] ~= nil then
        JoyEventHandler[eventID](x,y,z)
    end
end




游客,如果您要查看本帖隐藏内容请回复









4四处流浪
343/500
排名
6472
昨日变化
56

3

主题

48

帖子

343

积分

Rank: 4

UID
183706
好友
0
蛮牛币
439
威望
0
注册时间
2016-11-18
在线时间
102 小时
最后登录
2018-7-25
沙发
发表于 6 天前 | 只看该作者

5熟悉之中
916/1000
排名
3536
昨日变化
25

2

主题

155

帖子

916

积分

Rank: 5Rank: 5

UID
237394
好友
0
蛮牛币
58
威望
0
注册时间
2017-8-13
在线时间
379 小时
最后登录
2018-7-25
板凳
发表于 6 天前 | 只看该作者
厉害了我的哥

排名
25116
昨日变化
13

0

主题

23

帖子

47

积分

Rank: 1

UID
281485
好友
0
蛮牛币
32
威望
0
注册时间
2018-5-16
在线时间
10 小时
最后登录
2018-7-24
地板
发表于 6 天前 | 只看该作者
感谢楼主分享

7日久生情
2785/5000
排名
386
昨日变化
1

1

主题

360

帖子

2785

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
2219
好友
1
蛮牛币
7397
威望
0
注册时间
2013-8-19
在线时间
860 小时
最后登录
2018-7-25
5#
发表于 6 天前 | 只看该作者
seeeseee看看

排名
44781
昨日变化
15393

0

主题

1

帖子

5

积分

Rank: 1

UID
282382
好友
0
蛮牛币
24
威望
0
注册时间
2018-5-23
在线时间
2 小时
最后登录
2018-7-23
6#
发表于 6 天前 | 只看该作者
找了  好久的  虚拟摇杆 终于找到了  太好了  感谢楼主分享

7日久生情
1758/5000
排名
1305
昨日变化
1

14

主题

142

帖子

1758

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
157377
好友
3
蛮牛币
5402
威望
0
注册时间
2016-7-19
在线时间
740 小时
最后登录
2018-7-25
7#
发表于 6 天前 | 只看该作者
6666666666666666666666666666666

5熟悉之中
588/1000
排名
5060
昨日变化
2

2

主题

108

帖子

588

积分

Rank: 5Rank: 5

UID
252095
好友
1
蛮牛币
465
威望
0
注册时间
2017-11-2
在线时间
222 小时
最后登录
2018-7-25
8#
发表于 6 天前 | 只看该作者
不过的学习资料

5熟悉之中
632/1000
排名
4348
昨日变化
4

3

主题

150

帖子

632

积分

Rank: 5Rank: 5

UID
243239
好友
0
蛮牛币
1464
威望
0
注册时间
2017-9-13
在线时间
177 小时
最后登录
2018-7-24
9#
发表于 6 天前 | 只看该作者

7日久生情
3442/5000
排名
278
昨日变化
1

0

主题

817

帖子

3442

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
15165
好友
2
蛮牛币
13
威望
0
注册时间
2014-2-21
在线时间
843 小时
最后登录
2018-7-25
QQ
10#
发表于 6 天前 | 只看该作者
谢谢分享谢谢分享谢谢分享谢谢分享
[发帖际遇]: okok211 在网吧通宵,花了 1 蛮牛币. 幸运榜 / 衰神榜

3偶尔光临
252/300
排名
7100
昨日变化
4

2

主题

13

帖子

252

积分

Rank: 3Rank: 3Rank: 3

UID
213857
好友
0
蛮牛币
192
威望
0
注册时间
2017-3-23
在线时间
75 小时
最后登录
2018-7-24
11#
发表于 6 天前 | 只看该作者
6666666666666

4四处流浪
364/500
排名
8999
昨日变化
88

0

主题

193

帖子

364

积分

Rank: 4

UID
281167
好友
1
蛮牛币
668
威望
0
注册时间
2018-5-14
在线时间
55 小时
最后登录
2018-7-25
12#
发表于 6 天前 | 只看该作者
感谢分享

6蛮牛粉丝
1169/1500
排名
1917
昨日变化
5

0

主题

44

帖子

1169

积分

Rank: 6Rank: 6Rank: 6

UID
175786
好友
0
蛮牛币
1584
威望
0
注册时间
2016-10-15
在线时间
483 小时
最后登录
2018-7-25
13#
发表于 6 天前 | 只看该作者
不错不错?。。。?!

5熟悉之中
640/1000
排名
3266
昨日变化
4

0

主题

49

帖子

640

积分

Rank: 5Rank: 5

UID
231194
好友
0
蛮牛币
2056
威望
0
注册时间
2017-7-10
在线时间
171 小时
最后登录
2018-7-23
14#
发表于 5 天前 | 只看该作者
谢谢分享
[发帖际遇]: 一个袋子砸在了 简简单单happy 头上,简简单单happy 赚了 1 蛮牛币. 幸运榜 / 衰神榜

6蛮牛粉丝
1095/1500
排名
2069
昨日变化
10

0

主题

290

帖子

1095

积分

Rank: 6Rank: 6Rank: 6

UID
87577
好友
0
蛮牛币
3506
威望
0
注册时间
2015-3-31
在线时间
195 小时
最后登录
2018-7-25
15#
发表于 5 天前 | 只看该作者
too good too strong!

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 新宝娱乐城博彩打不开 返回列表
  • 李思思元元月亮姐姐 盘点央视主持人与子女温馨合影 2018-12-11
  • “忻州工匠”“忻州技能标兵”评选活动启动 2018-12-11
  • 包住内力,在不断变化中寻找契机,可出击可借力亦可卸力。 2018-12-10
  • 广州中考首用计算机辅助命题 满满的广州元素 2018-12-09
  • 植树、采茶、挖野菜…… 这才是春天正确的打开方式 2018-12-08
  • 【纯黑】《生化危机7》克里斯DLC不是英雄 2018-12-08
  • 150块地铁灯牌高调“炫父” 温暖南京城 2018-12-07
  • 【光明网专论】鞠立新:习近平新时代中国特色社会主义经济思想的内涵、逻辑和特质 2018-12-06
  • 江西“放管服”改革再出实招 2018-12-05
  • 首列商用磁浮2.0版列车下线 适用中心城市到卫星城间交通--旅游频道 2018-12-05
  • 空警-500改进型新照曝光,监控效率成倍提升 2018-12-04
  • 对美敲诈老手不能软越软越诈你要打就来 2018-12-04
  • 赵旭日:对阵恒大很有缘 比赛要一场一场去踢 2018-12-03
  • 《数码宝贝故事》第三阶段首发初回特典公布--人民网游戏 2018-12-03
  • 端午小长假自驾游归来 车辆保养完整攻略 2018-12-02
  • 354| 489| 714| 519| 982| 399| 511| 821| 750| 42|