处理3D光标点击

与3D光标进行交互是构建浮动菜单、链接到其他场景及以简单方式与3D环境交互的基础构件。

本教程展示了如何处理3D光标点击。我们略过3D光标的设置,因为在创建新项目时,“VR”项目模板中已为您设置好。

组件 

在此设置中使用的组件有cursorcursor-targetcollision

我们还将添加一个自定义组件log-on-click以实现点击对象时的特定行为。

编辑器中的设置 

在编辑器中,将两个组件附加到您想要使其可点击的对象collisioncursor-target

collision指定应该可以点击的区域,一旦添加,您会看到一个绿色轮廓指示可以点击的形状。您可以更改组件的碰撞形状以更接近您的对象。(当前不支持三角网格。)

cursor-target允许为各种光标事件添加JavaScript代码。

自定义行为 

虽然这些组件允许我们设置自定义行为,但它们自身仅更改光标的视觉行为:光标对象在指向可点击对象时会出现。

要在点击时添加行为,我们添加一个自定义JavaScript组件

import {Component, Property} from '@wonderlandengine/api';

extends class LogOnClick extends Component {
    static TypeName = 'log-on-click';

    static Properties = {
        message: Property.string("It was clicked!"),
    };

    start() {
        /* 获取"cursor-target"组件的引用 */
        const target = this.object.getComponent('cursor-target');

        target.addClickFunction(this.onClick.bind(this));
    }

    onClick() {
        /* 打印在编辑器中配置的消息 */
        console.log(this.message);
    }
}

一旦添加了该组件,您就可以在浏览器中运行项目,当对象被点击时,应该会在浏览器控制台中显示一条消息。