无法以所需的方式旋转立方体 - 平面和鼠标移动方法

Posted

技术标签:

【中文标题】无法以所需的方式旋转立方体 - 平面和鼠标移动方法【英文标题】:Unable to rotate cube in desired manner - plane and mousemove method 【发布时间】:2021-09-17 03:48:57 【问题描述】:

立方体应该保持平坦,但会朝光标方向旋转,只有一种旋转类型(2d - 自上而下)。我现在担心的是,这可能是由于网格对自身的中心?请帮忙!

在这里查看: https://thecoop.group/conquest/ground

代码从这里开始: https://github.com/the-coop/coopwebsite/blob/89ca8909ed3fe28afd79b34c5305b63aabba8638/lib/conquest/ground/engine/setupGroundMovement.js#L35

这是摘录,我尝试了很多不同的方法,可能会保留一些实验代码:

    const plane = new Plane(new Vector3(0, 1, 0), 1);
    const raycaster = new Raycaster();
    const mouse = new Vector2();
    const pointOfIntersection = new Vector3();


    document.addEventListener('mousemove', ev => 
        const  camera, me  = window.GROUND_LEVEL;

        mouse.x = ( ev.clientX / window.innerWidth ) * 2 - 1;
        mouse.y = - ( ev.clientY / window.innerHeight ) * 2 + 1;

        raycaster.setFromCamera(mouse, camera);
        raycaster.ray.intersectPlane(plane, pointOfIntersection);
        
        if (me.mesh) 
            // Attempt to make mesh "look at" (rotate) to target position.
            me.mesh.geometry.lookAt(pointOfIntersection);
        
    );

【问题讨论】:

没有人敢于接受它? 【参考方案1】:

pointOfIntersection 有 3 个维度对应立方体的三个轴。

如果您只希望立方体在一个轴上旋转,请尝试在 Object3D#lookAt 中为其他轴指定 0

// The cube will rotate on its Y axis when following a point on the X axis
me.mesh.geometry.lookAt(pointOfIntersection.x, 0, 0);

【讨论】:

这似乎不对,如何通过仅传递 x 来旋转到光标 (x, y) 的点? 相机是 .add() 到立方体的!!!!!!光线投射器来自相机?!?!?!!?

以上是关于无法以所需的方式旋转立方体 - 平面和鼠标移动方法的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法以所需的顺序运行Specflow场景(C#Selenium)?

C语言编程实现根据坐标批量绘制长方体的三维图,最好可以用鼠标移动和旋转

有没有办法以所需的格式加入这两个表?

OpenGL 鼠标在 3D 空间中的位置

怎样用鼠标控制摄像机的移动旋转

Json 没有以所需的模式返回正确的值