2017-08-24 41 views
2

中将某些元素固定在屏幕上我想在react-vr应用程序中始终显示分数或健康状况栏。如何在反应-Vr

我可以使用VrHeadModel - 旋转,yawPitchRoll和位置,但不得不计算它只是为了保持它的固定...似乎我失去了一些东西。

我该怎么做?

回答

1

更新要点有哪些,因为它是订阅的HM更少的延迟:

https://gist.github.com/cidicles/b4e978d3f3e2de8b359bdc51b5fb3261


这是我当前如何做这个。它有视觉滞后,并在一个循环中设置状态,但达到目标。

用于VrheadModel.rotation()数组创建状态

constructor(props) { 
    super(props); 
    this.state = { 
    hmRot: VrHeadModel.rotation() 
    } 
} 

启动定时器

componentDidMount(){ 
    this.timer = setInterval(()=>{this.tick()}, 50); 
} 
componentWillUnmount(){ 
    clearInterval(this.timer); 
} 
tick(){ 
    this.setState({ 
    hmRot: VrHeadModel.rotation() 
    }); 
} 

在0/0/0创建视图和在场景作为定位你的固定对象你通常是世界。在主视图上设置旋转以匹配相机的旋转。

render(){ 
    let {hmRot} = this.state; 
    return (
     <View 
     style={{ 
      position: 'absolute', 
      layoutOrigin: [0.5, 0.5], 
      transform: [ 
      {translate: [0, 0, 0]}, 
      {rotateX: hmRot[0]}, 
      {rotateY: hmRot[1]}, 
      {rotateZ: hmRot[2]} 
      ] 
     }}> 
     <Text 
      style={{ 
      position: 'absolute', 
      layoutOrigin: [0.5, 0.5], 
      backgroundColor: '#f00', 
      transform: [ 
       {translate: [0, 0, -2]}, 
      ] 
      }}> 
      Fixed 
     </Text> 
     </View> 
    ); 
    } 

周围有从阵营VR队这边这个问题相关的职位: https://github.com/facebook/react-vr/issues/261

+0

感谢,它工作得很好,当用户查找非常高,或者在地面除 - 然后我得分(在屏幕的顶部)在屏幕上方偏移 –

+0

,当我尝试调整旋转X到高或低时的效果,除了向后看时,屏幕上的分数全部移动 –

+0

太棒了,很高兴它解决了。 – cidicles