void Update()
    {
        if (speechManager == null)
        {
            speechManager = SpeechManager.Instance;
        }

        // use speech recognizer to control the mocap recorder
        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "RECORD":
                    if (mocapRecorder)
                    {
                        mocapRecorder.StartRecording();
                    }
                    break;

                case "STOP":
                    if (mocapRecorder)
                    {
                        mocapRecorder.StopRecording();
                    }
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }

        // alternatively, use the Jump-button (space-key)
        if (Input.GetButtonDown("Jump"))
        {
            if (mocapRecorder)
            {
                if (!mocapRecorder.IsRecording())
                {
                    mocapRecorder.StartRecording();
                }
                else
                {
                    mocapRecorder.StopRecording();
                }
            }
        }
    }
示例#2
0
    void FixedUpdate()
    {
        // get the speech manager instance
        if (speechManager == null)
        {
            speechManager = SpeechManager.Instance;
        }

        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "FORWARD":
                    //GameObject m=GameObject.Find("Next");
                    levelLoaded = true;
                    Application.LoadLevel(3);
                    NextPage();

                    break;

                case "Next":
                    //GameObject m=GameObject.Find("Next");
                    //levelLoaded = true;
                    //	Application.LoadLevel (3);
                    //NextPage ();
                    //	levelLoaded = true;
                    //	Application.LoadLevel (3);
                    break;


                case "Back":
                    //GameObject m=GameObject.Find("Next");
                    //levelLoaded = true;
                    //	Application.LoadLevel (3);
                    LastPage();
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }
        else
        {
            Debug.Log("FAIL TO RECOGNIZE ");
        }
    }
    void Update()
    {
        if (speechManager == null)
        {
            speechManager = SpeechManager.Instance;
        }

        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "RECORD":
                    if (saverPlayer)
                    {
                        saverPlayer.StartRecording();
                    }
                    break;

                case "PLAY":
                    if (saverPlayer)
                    {
                        saverPlayer.StartPlaying();
                    }
                    break;

                case "STOP":
                    if (saverPlayer)
                    {
                        saverPlayer.StopRecordingOrPlaying();
                    }
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }
    }
示例#4
0
    void FixedUpdate()
    {
        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "FORWARD":
                    walkSpeed     = 0.2f;
                    walkDirection = 0f;
                    break;

                case "BACK":
                    walkSpeed     = -0.2f;
                    walkDirection = 0f;
                    break;

                case "LEFT":
                    walkDirection = -0.2f;
                    if (walkSpeed == 0f)
                    {
                        walkSpeed = 0.2f;
                    }
                    break;

                case "RIGHT":
                    walkDirection = 0.2f;
                    if (walkSpeed == 0f)
                    {
                        walkSpeed = 0.2f;
                    }
                    break;

                case "RUN":
                    walkSpeed     = 0.5f;
                    walkDirection = 0f;
                    break;

                case "STOP":
                    walkSpeed     = 0f;
                    walkDirection = 0f;
                    break;

                case "JUMP":
                    jumpNow       = true;
                    walkSpeed     = 0.5f;
                    walkDirection = 0f;
                    break;

                case "HELLO":
                    waveNow       = true;
                    walkSpeed     = 0.0f;
                    walkDirection = 0f;
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }
        else
        {
            walkDirection = Input.GetAxis("Horizontal");                                // setup h variable as our horizontal input axis
            walkSpeed     = Input.GetAxis("Vertical");                                  // setup v variables as our vertical input axis
            jumpNow       = Input.GetButtonDown("Jump");
            waveNow       = Input.GetButtonDown("Jump");
        }

        anim.SetFloat("Speed", walkSpeed);                              // set our animator's float parameter 'Speed' equal to the vertical input axis
        anim.SetFloat("Direction", walkDirection);                      // set our animator's float parameter 'Direction' equal to the horizontal input axis
        anim.speed = animSpeed;                                         // set the speed of our animator to the public variable 'animSpeed'
        anim.SetLookAtWeight(lookWeight);                               // set the Look At Weight - amount to use look at IK vs using the head's animation
        currentBaseState = anim.GetCurrentAnimatorStateInfo(0);         // set our currentState variable to the current state of the Base Layer (0) of animation

        if (anim.layerCount == 2)
        {
            layer2CurrentState = anim.GetCurrentAnimatorStateInfo(1);                   // set our layer2CurrentState variable to the current state of the second Layer (1) of animation
        }
        // LOOK AT ENEMY

//		// if we hold Alt..
//		if(Input.GetButton("Fire2"))
//		{
//			// ...set a position to look at with the head, and use Lerp to smooth the look weight from animation to IK (see line 54)
//			anim.SetLookAtPosition(enemy.position);
//			lookWeight = Mathf.Lerp(lookWeight,1f,Time.deltaTime*lookSmoother);
//		}
//		// else, return to using animation for the head by lerping back to 0 for look at weight
//		else
//		{
//			lookWeight = Mathf.Lerp(lookWeight,0f,Time.deltaTime*lookSmoother);
//		}

        // STANDARD JUMPING

        // if we are currently in a state called Locomotion (see line 25), then allow Jump input (Space) to set the Jump bool parameter in the Animator to true
        if (currentBaseState.nameHash == locoState)
        {
            if (jumpNow)
            {
                jumpNow = false;
                anim.SetBool("Jump", true);
            }
        }

        // if we are in the jumping state...
        else if (currentBaseState.nameHash == jumpState)
        {
            //  ..and not still in transition..
            if (!anim.IsInTransition(0))
            {
                if (useCurves)
                {
                    // ..set the collider height to a float curve in the clip called ColliderHeight
                    col.height = anim.GetFloat("ColliderHeight");
                }

                // reset the Jump bool so we can jump again, and so that the state does not loop
                anim.SetBool("Jump", false);
            }

            // Raycast down from the center of the character..
            Ray        ray     = new Ray(transform.position + Vector3.up, -Vector3.up);
            RaycastHit hitInfo = new RaycastHit();

            if (Physics.Raycast(ray, out hitInfo))
            {
                // ..if distance to the ground is more than 1.75, use Match Target
                if (hitInfo.distance > 1.75f)
                {
                    // MatchTarget allows us to take over animation and smoothly transition our character towards a location - the hit point from the ray.
                    // Here we're telling the Root of the character to only be influenced on the Y axis (MatchTargetWeightMask) and only occur between 0.35 and 0.5
                    // of the timeline of our animation clip
                    anim.MatchTarget(hitInfo.point, Quaternion.identity, AvatarTarget.Root, new MatchTargetWeightMask(new Vector3(0, 1, 0), 0), 0.35f, 0.5f);
                }
            }
        }


        // JUMP DOWN AND ROLL

//		// if we are jumping down, set our Collider's Y position to the float curve from the animation clip -
//		// this is a slight lowering so that the collider hits the floor as the character extends his legs
//		else if (currentBaseState.nameHash == jumpDownState)
//		{
//			col.center = new Vector3(0, anim.GetFloat("ColliderY"), 0);
//		}
//
//		// if we are falling, set our Grounded boolean to true when our character's root
//		// position is less that 0.6, this allows us to transition from fall into roll and run
//		// we then set the Collider's Height equal to the float curve from the animation clip
//		else if (currentBaseState.nameHash == fallState)
//		{
//			col.height = anim.GetFloat("ColliderHeight");
//		}
//
//		// if we are in the roll state and not in transition, set Collider Height to the float curve from the animation clip
//		// this ensures we are in a short spherical capsule height during the roll, so we can smash through the lower
//		// boxes, and then extends the collider as we come out of the roll
//		// we also moderate the Y position of the collider using another of these curves on line 128
//		else if (currentBaseState.nameHash == rollState)
//		{
//			if(!anim.IsInTransition(0))
//			{
//				if(useCurves)
//					col.height = anim.GetFloat("ColliderHeight");
//
//				col.center = new Vector3(0, anim.GetFloat("ColliderY"), 0);
//
//			}
//		}

        // IDLE

        // check if we are at idle, if so, let us Wave!
        else if (currentBaseState.nameHash == idleState)
        {
            if (waveNow)
            {
                waveNow = false;
                anim.SetBool("Wave", true);
            }
        }

        // if we enter the waving state, reset the bool to let us wave again in future
        if (layer2CurrentState.nameHash == waveState)
        {
            anim.SetBool("Wave", false);
        }
    }
    void FixedUpdate()
    {
        // get the speech manager instance
        if (speechManager == null)
        {
            speechManager = SpeechManager.Instance;
        }

        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "FORWARD":
                    walkSpeed     = 0.2f;
                    walkDirection = 0f;
                    break;

                case "BACK":
                    walkSpeed     = -0.2f;
                    walkDirection = 0f;
                    break;

                case "LEFT":
                    walkDirection = -0.2f;
                    if (walkSpeed == 0f)
                    {
                        walkSpeed = 0.2f;
                    }
                    break;

                case "RIGHT":
                    walkDirection = 0.2f;
                    if (walkSpeed == 0f)
                    {
                        walkSpeed = 0.2f;
                    }
                    break;

                case "RUN":
                    walkSpeed     = 0.5f;
                    walkDirection = 0f;
                    break;

                case "STOP":
                    walkSpeed     = 0f;
                    walkDirection = 0f;
                    break;

                case "JUMP":
                    jumpNow       = true;
                    walkSpeed     = 0.5f;
                    walkDirection = 0f;
                    break;

                case "HELLO":
                    waveNow       = true;
                    walkSpeed     = 0.0f;
                    walkDirection = 0f;
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }
        else
        {
            walkDirection = Input.GetAxis("Horizontal");                                // setup h variable as our horizontal input axis
            walkSpeed     = Input.GetAxis("Vertical");                                  // setup v variables as our vertical input axis
            jumpNow       = Input.GetButtonDown("Jump");
            waveNow       = Input.GetButtonDown("Jump");
        }

        anim.SetFloat("Speed", walkSpeed);                              // set our animator's float parameter 'Speed' equal to the vertical input axis
        anim.SetFloat("Direction", walkDirection);                      // set our animator's float parameter 'Direction' equal to the horizontal input axis
        anim.speed = animSpeed;                                         // set the speed of our animator to the public variable 'animSpeed'
        anim.SetLookAtWeight(lookWeight);                               // set the Look At Weight - amount to use look at IK vs using the head's animation
        currentBaseState = anim.GetCurrentAnimatorStateInfo(0);         // set our currentState variable to the current state of the Base Layer (0) of animation

        if (anim.layerCount == 2)
        {
            layer2CurrentState = anim.GetCurrentAnimatorStateInfo(1);                   // set our layer2CurrentState variable to the current state of the second Layer (1) of animation
        }

        // if we are currently in a state called Locomotion (see line 25), then allow Jump input (Space) to set the Jump bool parameter in the Animator to true
        //if (currentBaseState.nameHash == locoState)
        //{
        //	if(jumpNow)
        //	{
        //		jumpNow = false;
        //		anim.SetBool("Jump", true);
        //	}
        //}

        // if we are in the jumping state...
        //      else if (currentBaseState.nameHash == jumpState)
        //      {
        //	//  ..and not still in transition..
        //	if(!anim.IsInTransition(0))
        //	{
        //		if(useCurves)
        //			// ..set the collider height to a float curve in the clip called ColliderHeight
        //			col.height = anim.GetFloat("ColliderHeight");

        //		// reset the Jump bool so we can jump again, and so that the state does not loop
        //		anim.SetBool("Jump", false);
        //	}

        //	// Raycast down from the center of the character..
        //	Ray ray = new Ray(transform.position + Vector3.up, -Vector3.up);
        //	RaycastHit hitInfo = new RaycastHit();

        //	if (Physics.Raycast(ray, out hitInfo))
        //	{
        //		// ..if distance to the ground is more than 1.75, use Match Target
        //		if (hitInfo.distance > 1.75f)
        //		{

        //			// MatchTarget allows us to take over animation and smoothly transition our character towards a location - the hit point from the ray.
        //			// Here we're telling the Root of the character to only be influenced on the Y axis (MatchTargetWeightMask) and only occur between 0.35 and 0.5
        //			// of the timeline of our animation clip
        //			anim.MatchTarget(hitInfo.point, Quaternion.identity, AvatarTarget.Root, new MatchTargetWeightMask(new Vector3(0, 1, 0), 0), 0.35f, 0.5f);
        //		}
        //	}
        //}

        // check if we are at idle, if so, let us Wave!
        //else if (currentBaseState.nameHash == idleState)
        //{
        //	if(waveNow)
        //	{
        //		waveNow = false;
        //		anim.SetBool("Wave", true);
        //	}
        //}

        // if we enter the waving state, reset the bool to let us wave again in future
        //if(layer2CurrentState.nameHash == waveState)
        //{
        //	anim.SetBool("Wave", false);
        //}
    }
    void Update()
    {
        if (speechManager == null)
        {
            speechManager = SpeechManager.Instance;
        }

        if (speechManager != null && speechManager.IsSapiInitialized())
        {
            if (speechManager.IsPhraseRecognized())
            {
                string sPhraseTag = speechManager.GetPhraseTagRecognized();

                switch (sPhraseTag)
                {
                case "RECORD":
                    if (saverPlayer)
                    {
                        saverPlayer.StartRecording();
                    }
                    break;

                case "PLAY":
                    if (saverPlayer)
                    {
                        saverPlayer.StartPlaying();
                    }
                    break;

                case "STOP":
                    if (saverPlayer)
                    {
                        saverPlayer.StopRecordingOrPlaying();
                    }
                    break;
                }

                speechManager.ClearPhraseRecognized();
            }
        }

        // alternatively, use the keyboard
        if (Input.GetButtonDown("Jump"))         // start or stop recording
        {
            if (saverPlayer)
            {
                if (!saverPlayer.IsRecording())
                {
                    saverPlayer.StartRecording();
                }
                else
                {
                    saverPlayer.StopRecordingOrPlaying();
                }
            }
        }

        if (Input.GetButtonDown("Fire1"))         // start or stop playing
        {
            if (saverPlayer)
            {
                if (!saverPlayer.IsPlaying())
                {
                    saverPlayer.StartPlaying();
                }
                else
                {
                    saverPlayer.StopRecordingOrPlaying();
                }
            }
        }
    }