我想为智能手机创建一个简单的aframe片段,只要触摸屏幕(或屏幕上的按钮),它就可以沿当前视野的方向移动相机。我已经找到了一段非常有用的代码here,它可以使照相机连续朝FoV方向移动(见下文)。
不幸的是,我所有仅在按下按钮期间激活该动作的尝试都失败了(我发现的许多示例仅使用瞬时事件,例如“单击”或第一次面对某个特定对象,但不是连续的)按钮)。是否有可能做我想中的事情?如果是这样,我需要什么样的触发器?
<script src="https://cdnjs.cloudflare.com/ajax/libs/aframe/0.5.0/aframe.min.js"></script>
<script src="//cdn.rawgit.com/donmccurdy/aframe-extras/v3.7.0/dist/aframe-extras.min.js"></script>
<html>
<body>
<script type="text/javascript">
AFRAME.registerComponent("listener", {
schema :
{
stepFactor : {
type : "number",
default : 0.05
}
},
tick : function()
{ document.querySelector("a-camera").components.camera.camera.parent.position.add(document.querySelector("a-camera").components.camera.camera.getWorldDirection().multiplyScalar(this.data.stepFactor));
}
});
</script>
<a-scene>
<a-camera position="0 0 30">
<a-entity id="cursor" cursor="fuse: true;fuseTimeout:500"
material="color:black"
geometry="primitive:ring"
position="0 0 -1"
scale="0.01 0.01 0.01"
listener="stepFactor:0.01"
></a-entity>
</a-camera>
<a-grid></a-grid>
<a-box position="0 1 -2" color="blue" move eve></a-box>
</body>
</html>
答案 0 :(得分:0)
尝试这样的事情:通过mouseup
和mousedown
事件来切换布尔值,并在简单的tick
条件下执行if (myBool)
:
AFRAME.registerComponent("foo", {
init: function() {
this.mousedown = false
window.addEventListener("mouseup", (e)=> {
this.mousedown = false
})
window.addEventListener("mousedown", (e)=> {
this.mousedown = true
})
},
tick: function() {
if (this.mousedown) {
//do stuff
}
}
})
提琴here,但仅在x / y轴上移动相机。