public void TurnToFront(Auxiliary auxiliary, FormInput form)
    {
        Vector3 rotateAngle = new Vector3(0, 0, 0);

        if (auxiliary.elements[0].name == "Face")
        {
            rotateAngle = GetRotateAngle(auxiliary);
            Debug.Log("change");
        }
        geoCamera.TriggerRotateAnimation(rotateAngle.x, rotateAngle.y);  //动画旋转镜头
    }
示例#2
0
    private void CreateNavAxis()
    {
        int layer = LayerMask.NameToLayer(LAYER);

        Mesh meshX = (Mesh)Instantiate(AxisMesh);
        Mesh meshY = (Mesh)Instantiate(AxisMesh);
        Mesh meshZ = (Mesh)Instantiate(AxisMesh);
        Mesh meshW = (Mesh)Instantiate(AxisMesh);

        SetMeshUV(meshX, new Vector4(1, 0, 0, 0));
        SetMeshUV(meshY, new Vector4(0, 1, 0, 0));
        SetMeshUV(meshZ, new Vector4(0, 0, 1, 0));
        SetMeshUV(meshW, new Vector4(0, 0, 0, 1));

        string[]  axisNames     = new string[] { "X", "Y", "Z", "-X", "-Y", "-Z" };
        Vector3[] axisPositions =
        {
            new Vector3(1,   0,  0),
            new Vector3(0,   1,  0),
            new Vector3(0,   0,  1),
            new Vector3(-1,  0,  0),
            new Vector3(0,  -1,  0),
            new Vector3(0,   0, -1),
        };
        Vector3[] axisRotations =
        {
            new Vector3(0,   0,  90),
            new Vector3(180, 0,   0),
            new Vector3(-90, 0,   0),
            new Vector3(0,   0, -90),
            new Vector3(0,   0,   0),
            new Vector3(90,  0,   0),
        };
        Vector3 axisScale = Vector3.one;

        Vector2[] axisCamera =
        {
            new Vector2(270,   0),
            new Vector2(270,  90),
            new Vector2(180,   0),
            new Vector2(90,    0),
            new Vector2(270, -90),
            new Vector2(0,     0),
        };

        Mesh[] axisMeshes = new Mesh[] { meshX, meshY, meshZ, meshW, meshW, meshW };

        for (int i = 0; i < axisNames.Length; i++)
        {
            GameObject axisObject = new GameObject(axisNames[i]);
            axisObject.layer = layer;
            axisObject.transform.SetParent(transform);
            axisObject.transform.position    = axisPositions[i] * 0.5f;
            axisObject.transform.eulerAngles = axisRotations[i];
            axisObject.transform.localScale  = axisScale;

            NavAxisBehaviour axis = axisObject.AddComponent <NavAxisBehaviour>();
            axis.mesh = axisMeshes[i];
            axis.Init(axisCamera[i]);
            axis.OnClick = (rotation) => geoCamera.TriggerRotateAnimation(rotation.x, rotation.y);
        }
    }