【Unity VR开发】结合VRTK4.0:设置无效目标

前言:

对象指针会将包含碰撞体的任何游戏对象视为有效目标,这意味着指针将处于有效状态(默认情况下,这意味着指针显示为绿色光束)。

在某些情况下,您希望对象指针能够与游戏对象发生碰撞,但认为目标无效,例如无法传送到的区域或锁定的按钮。


流程:

Step1:

 接上篇,首先我们在原有的基础上在添加一个Cube;作为我们本节的实验物体。

Step2:

当我们运行工程,激活指针并将其对准,你会发现指针光束击中我们的Cube。

Step3:

我们来想,前面我们可以通过设置层来改变指针对游戏对象是否有效,但是一般我们场景中会有很多的模型,这样及其繁琐,处理起来也比较麻烦,这时,我们需要制定一个规则,声明我们希望对象指针认为每个游戏对象都有效,但是我们添加到列表中的游戏对象除外。

为此,我们需要两条规则:

1,如果某些内容再我们制定的列表中,那么我们认为它是真的(True),是有效的,即List Contains Rule;

2,但是我们逻辑上是想列表中的内容其实是假的,也就是所谓的false,是无效的,即Negation Rule

上面的两条规则其实就是我们的逻辑,那么我们需要怎么做的,接下来我就交给大家。

首先我们找到我们的窗口:Window -> Zinnia -> Observable List Component Generator;

 点击后出现下面界面,我们需要将Component Type设置为:List Contains Rule。然后根据自己需要起名字。完成之后点击Generate Component按钮添加到场景中。

 接着我们需要将前面添加的Cube拖放到List Contains Rule属性中;这一步完成之后我们初步实现了上面两个规则中的第一条。

Step4:

我们现在已经设置了我们的声明,说明列表中包含的任何内容都将被视为有效目标,但我们实际上希望相反。我们接着往下看:

首先我们在场景中添加一个新的游戏对象,即空物体,并按照自己需要起名字。

Step5:

 接着,我们在游戏对象上添加组件:Negation Rule,然后将前面创建的PointerValidTargetRule游戏对象添加到当前组件中。

这个新创建的用于翻转我们的结果,所以如果我们的列表包含我们的目标,那么我们希望它现在是假的,我们的指针光束对其是无效的。

 Step5:

然后我们将创建的PointerNegationRule游戏对象添加到我们的直线上面的Target Validity属性中。

Play:

运行场景,激活直线指针并将其对准。您将看到指针光束仍然击中,但它显示为红色,因为它处于无效目标状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值