level 7
一只萌鼠鼠🐭
楼主

如图,我想制作一个手机端的游戏(因此只会出现InputEventScreenTouch和InputEventScreenDrag事件)现有一个ScrollContainer(图中的UnitMenu)用于盛放所有的单位卡片(图中的Entry_xx)
Entry的脚本接收 gui_input 信号并检查输入事件是否为屏幕滑动(InputEventScreenDrag),如果是,则会进入拖拽建筑模式,右侧列表收起(如下图)

现在的问题是,玩家需要上下滑动ScrollContainer来上下翻菜单,而由于Entry占据了大多数区域,所以玩家会不可避免地滑动到Entry上,而Entry只要检测到滑动就会进入拖拽建筑模式,所以导致玩家无法翻菜单...所以,有没有办法检测玩家到底是想 拖拽建筑 还是 翻动菜单?
-----------------------------------------------------------------------------------
我想到的一个思路是,检测drag的relative,如果他与 向上方向 的角度绝对值小于45度则直接pass,反之则进入拖拽建筑模式,这样可以区分玩家在上下滑动(翻动菜单)还是左右滑动(拖拽建筑)
这个方法的问题有两个:
1. 玩家的拖拽并不是严格的直线,可能中途会有一小段是左右滑动的而整体是上下滑动,这导致中途会突然进入 拖拽建筑模式
2. 即使Entry的脚本直接pass且没有set_input_as_handled,ScrollContainer仍然没有接收到上下滑动的事件,因此最终还是没有翻动菜单
请问有没有更好的解决方案?



