Beispiel #1
0
    public void UpdateState()
    {
        try
        {
#if UNITY_EDITOR || UNITY_STANDALONE_WIN
            Quaternion rot;
            bool       rolled = false;
            if (Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
            {
                mouseX += Input.GetAxis("Mouse X") * 5;
                if (mouseX <= -180)
                {
                    mouseX += 360;
                }
                else if (mouseX > 180)
                {
                    mouseX -= 360;
                }
                mouseY -= Input.GetAxis("Mouse Y") * 2.4f;
                mouseY  = Mathf.Clamp(mouseY, -85, 85);
            }
            else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
            {
                rolled  = true;
                mouseZ += Input.GetAxis("Mouse X") * 5;
                mouseZ  = Mathf.Clamp(mouseZ, -85, 85);
            }
            if (!rolled && autoUntiltHead)
            {
                // People don't usually leave their heads tilted to one side for long.
                mouseZ = Mathf.Lerp(mouseZ, 0, Time.deltaTime / (Time.deltaTime + 0.1f));
            }
            rot = Quaternion.Euler(mouseY, mouseX, mouseZ);
            var neck = (rot * neckOffset - neckOffset.y * Vector3.up) * neckModelScale;
            headPose.Set(neck, rot);
#else
            MojingSDK.GetLastHeadView(ref headView);
            headPose.SetRightHanded(headView);
#endif
        }
        catch (Exception e)
        {
            MojingLog.LogError(e.ToString());
        }
    }