我正在为一个OpenGL ES 2.0 iOS应用程序实现平移,在某些情况下,我正在努力在z方向上进行平移。最初加载模型时,y+位于屏幕顶部,x+指向屏幕的左侧,而z+则指向屏幕外的用户。在这种情况下,平移的工作方式与预期的一样--平移“向右”按预期沿正x轴移动模型。Y也适用-平移“向上”沿正y轴移动模式(坐标变为负值,因此我们只是翻转坐标以正确执行操作)。问题总是与z轴有关,当模型旋转时,z+轴现在指向右边,平移“右”我得到负的z值,平移到左边我得到正值,所以看起来坐标像z轴一样翻转。当z+指向屏幕的左侧时,也会出现同样的逻辑--负值表示向左平移,正值表示向右平移。到目前一切尚好。
当z+现
我正在创建一个OpenGL ES 2.0应用程序。我希望实现触摸控制,这样我就可以在屏幕上执行手势(如滑动)时旋转3D对象。
我有旋转相机和旋转物体的功能。我的问题是,我需要知道哪些旋转角度,在X和Y中,必须传递给旋转函数。
如果用户在特定方向上执行滑动,我如何计算X和Y方向上的角度,以便将它们传递给旋转函数?
我想在3d场景中旋转一个物体。在下面的代码中,我简单地旋转了WorldMatrix。但是如果场景中有两个物体而不是一个呢?如果我旋转WorldMatrix,两者都会旋转(以一种奇怪的方式)。如何在不改变任何其他模型的情况下旋转场景中的单个对象?
// Clear the buffers to begin the scene.
m_OpenGL->BeginScene(0.0f, 0.0f, 0.0f, 1.0f);
// Generate the view matrix based on the camera's position.
m_Camera->Render();
我有两个DisplayObject,一个包含另一个,如下所示:
var sprite1:Sprite = new Sprite();
sprite1.addChild(loader1); // assume that I have load picture on to loader1
loader1.rotationZ = 30;
sprite1.rotationZ = -30;如果我运行上面的代码,loader1上的图像看起来就像它根本没有旋转过一样,因为它的容器是以相反的方向旋转的。正如我所料,这是正确的。
但是,如果代码有多个轴旋转:
loader1.rotationZ = 30;
lo
我有一个球体作为球员,我希望它移动相对于相机,而不是世界。
当我沿着Y轴旋转相机90度或270度,并给出输入,它的输出与预期相反。
下面是附在球体上的脚本:
using System.Collections;
using UnityEngine;
public class mover : MonoBehaviour {
public Rigidbody sphere;
public GameObject cameraa;
void Start ()
{
sphere = GetComponent<Rigidbody> ()