允许上下同时进行触摸控制

时间:2019-05-28 14:27:23

标签: mobile controls touch aframe

同一场景中的触摸控制只能在左右方向上使用,不能在移动设备上上下移动 但是使用桌面它可以完美地工作 当我添加触摸控件时,外观控件已被删除

如何同时添加两者

3 个答案:

答案 0 :(得分:1)

我从“Igor R”那里得到了答案并稍微整理了一下。

AFRAME.components["look-controls"].Component.prototype.onTouchMove = function (t) {
    if (this.touchStarted && this.data.touchEnabled) {
        this.pitchObject.rotation.x += .6 * Math.PI * (t.touches[0].pageY - this.touchStart.y) / this.el.sceneEl.canvas.clientHeight;
        this.yawObject.rotation.y += /*  */ Math.PI * (t.touches[0].pageX - this.touchStart.x) / this.el.sceneEl.canvas.clientWidth;
        this.pitchObject.rotation.x = Math.max(Math.PI / -2, Math.min(Math.PI / 2, this.pitchObject.rotation.x));
        this.touchStart = {
            x: t.touches[0].pageX,
            y: t.touches[0].pageY
        }
    }
}

答案 1 :(得分:0)

请指定您使用的是iOS设备还是Android。遵循的步骤:

  1. 在iOS 12.2上,这是一个已知问题,因为Apple已禁用Safari中的设备方向和设备运动。尝试手动启用它,但仍然无法正常工作。安装了Chrome和carboard-vr文件,但没有取得丰硕的成果。

  2. 在Android上,如果没有安装Google硬纸板。更新Aframe的版本,确保您使用的是A-Frame 0.9.2。

答案 2 :(得分:0)

我想要在手机上做同样的事情。加载aFrame库后,添加以下代码:

AFRAME.components["look-controls"].Component.prototype.onTouchMove = function (t) {
                        var PI_2 = Math.PI/2,
                        e,
                        o = this.el.sceneEl.canvas,
                        i = this.yawObject,
                        j = this.pitchObject;
                        this.touchStarted && this.data.touchEnabled && (e = 2 * Math.PI * (t.touches[0].pageX - this.touchStart.x) / o.clientWidth, f = 2 * Math.PI * (t.touches[0].pageY - this.touchStart.y) / o.clientHeight, j.rotation.x += .3 * f, i.rotation.y += .5 * e, j.rotation.x = Math.max(-PI_2, Math.min(PI_2, j.rotation.x)), this.touchStart = {
                                x: t.touches[0].pageX,
                                y: t.touches[0].pageY
                            })
                        }

或者,您也可以在aframe.min.js(或使用的任何文件)中找到“外观控件”的代码,然后在其中修改onTouchMove函数。