UE5.5 VR项目初学踩坑(2)UI面板修改

示例工程中UI的射线显示方式感觉比较好,所以保留下来。原本我的设计是触摸板生成直线射线,按下触摸板移动,扣扳机点击,但是射线移动起来没有抛物线舒服,所以使用抛物线移动,在指到UI时候自动显示射线。

首先查看示例工程里的Menu蓝图。比较复杂,大致就是Widget是UI页面,MenuLaser是显示的射线,cursor是射线的小球。我们直接模仿这个,新建个Actor蓝图。

示例工程里是一个手按按键,UI绑定在手柄上,另一个手可以指向点击UI。我这想直接放在场景里合适的位置,操作起来也方便,所以要有两个射线。widget是控件组件。MenuLaser是Niagara的组件。这里比较坑的是如何找建立的类型比较费劲。

细节里面就按照原本的菜单写就行了。

然后建立个控件蓝图,里面放两个按钮UITest2。

给按钮添加上点击方法。

这里测试用,直接输出文字就行。接下来写逻辑,在UITest里。

添加两个变量,这两个是点击时用的。

在开始时候给这两个先赋值。

太长了,分两个图截取。接下来就是射线检测了,具体逻辑是在Tick函数里不断检测,右手射线在ui上,显示右手射线,不在时候隐藏右手射线并检测左手射线。在的话显示左手射线,不在的话左右手都隐藏掉。

1.射线检测

2.射线显示

3.显示射线起始点和终点位置

左手的同理,在Branch分支里写。

最后在左手的Branch分支里把射线都隐藏了。

接下来的就是写点击方法了,按照示例里的复制就行。

全部完成后进行测试。

最开始射线指不到ui上面,只能指墙,射线也一直都存在,这里进行修改。

首先要在编辑,项目设置,引擎,碰撞里,添加个新的检测通道,默认忽略。

然后编辑下面的UI预设,把UILine改为阻挡。

这时再设置UITest里的widget里的碰撞预设,改为UI。

并且把射线检测的节点选择为UILine。并且把ignore Self也取消勾选。

勾选的时候会忽略自身的碰撞,就会一直选不中面板。(坑)

下一个坑就是点击方法一直不生效,输出log测试发现按钮方法就没执行。查找资料需要在开始时候添加一个EnableInput节点。在初始化变量之后直接添加就行。

这样就能触发手柄按钮了,但是还是点不到按钮。给两个控件交互组件添加ShowDebug发现是长度不够。在上面的图里已经给长度赋值了,这样就没有问题了,可以触发点击效果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值