前段时间学着用 Nomad 建模 以及 Cocos 做小游戏来着,虽然没啥产出,但是感觉现在在看 XR-FRAME 这块似乎更好理解了(XD
官方例子:github1s.com/dtysky/xr-f…
<xr-start
disable-scroll
id="main-frame"
width="{{renderWidth}}"
height="{{renderHeight}}"
style="width:{{width}}px;height:{{height}}px;"
/>
xr-start 是自定义组件名,width、height、style 这些必填,但是 demo 里面 xr-frame 组件里面并没有显式的接收,可能是在框架层上做的处理。
基本构成
xr-frame组件的构成大概如下:
xr-assets 像是整个场景的资源加载器,资源加载都要写在这里面,通过asset-id 标识唯一性给需要加载资源的标签用。
auto-sync属性是一个数字数组,用于将对应顺序的子节点绑定到某个特征点上,其中-1表示忽略该节点,在运行过程中会自动同步变换信息
<xr-gltf model="miku" position="-0.15 0.75 0" scale="0.07 0.07 0.07" rotation="0 180 0" anim-autoplay />
position、scale、rotation 这些值都是 x、y、z 轴为基础的(原点在哪里,世界中心?本体中心?)
交互和物理
交互方面提供了 shape 系列组件,可以给需要交互的物体设置轮廓,绑定事件;
物理方面设置物体为刚体,使其有重力、碰撞、重叠之类。
通信
比如点击场景内的物块,或者物体发生碰撞,可能会通知小程序的 UI 层做处理。xr-frame 组件和父级的通信和原生组件一致,用的 triggerEvent