示例#1
0
    void FixedUpdate()
    {
        if (Config.Instance.IsStandalone)
        {
            this.updateKeyboard();
        }

        if (Config.Instance.UseKinect)
        {
            redirectToFrontTurnMediator.update(Time.deltaTime);
        }

        player.rigidbody.velocity = new Vector3();  // Gegen Sliden, wenn irgendwo gegengelaufen wird

        if (turnVelocityDegPerSec != 0.0f)
        {
            // Wenn Kinect angeschlossen, können wir um den User rotieren
            if (Config.Instance.UseKinect)
            {
                Vector3 pos = kinectController.getSensor(Kinect.TrackerId.HIP_CENTER);

                // rotieren um den Benutzer: Zur Position hin...
                player.transform.Translate(pos);
                // um diese drehen...
                player.transform.Rotate(Vector3.up, turnVelocityDegPerSec * Time.deltaTime);
                // und wieder zurück.
                player.transform.Translate(-pos);
            }
            else // Ansonsten um den Mittelpunkt, wie früher.
            {
                player.transform.Rotate(Vector3.up, turnVelocityDegPerSec * Time.deltaTime);
            }

            playerAvatar.transform.Rotate(Vector3.up, turnVelocityDegPerSec * Time.deltaTime);

            if (Network.peerType != NetworkPeerType.Disconnected)
            {
                //eigene rotation Senden
                observer.SendRotate(playerAvatar.transform.rotation, GameController.Instance.IsServer);
            }
        }

        if (upVelocityDegPerSec != 0.0f)
        {
            player.transform.Rotate(Vector3.right, upVelocityDegPerSec * Time.deltaTime);
        }

        if (rollVelocityDegPerSec != 0.0f)
        {
            player.transform.Rotate(Vector3.forward, rollVelocityDegPerSec * Time.deltaTime);
        }

        if (walkVelocityMeterPerSec != 0)
        {
            if (Config.Instance.UseKinect)
            {
                player.transform.position = (player.transform.position + player.transform.TransformDirection(kinectController.CurUserRotation) * Time.deltaTime * walkVelocityMeterPerSec);
            }
            else
            {
                player.transform.position = (player.transform.position + player.transform.forward * Time.deltaTime * walkVelocityMeterPerSec);
            }

            if (Network.peerType != NetworkPeerType.Disconnected)
            {
                //eigene Position Senden
                observer.SendPosition(player.transform.position, GameController.Instance.IsServer);
            }
        }
    }