Adventure Creator Wikia
Register
Advertisement

Note: This is an alternative integration for Rogo LipSync and is intended to allow emotions and mouth movement to be played independently from any audio. The integration consists of three AC actions. These will be posted in separate articles to avoid clutter.

Author's quote:

Use this as a means to have emotions/mouth movement that plays with text (no audio) and limit the .asset files to just a handful - short speech, medium speech, long speech. I also use it for asset files that just sync gestures and emotions. 

To use it replace the text in a .cs file named RogoLipSync_Play with this text, or create a new blank text file, then paste the text and rename the file RogoLipSync_Play.cs. Then drop the file into the folder named actions inside the Adventure creator folder. Then, just use the action in an action list.

The code for the play action is as follows:

using UnityEngine;
using System.Collections;
using RogoDigital.Lipsync;


#if UNITY_EDITOR
using UnityEditor;
#endif
 
 namespace AC
 {
     [System.Serializable]
    public class RogoLipSync_Play : Action
     {
         public bool isPlayer;
        public LipSync lipSyncTarget;
        public LipSyncData  dataClip;
        public bool canInterrupt;

        public RogoLipSync_Play()
        {
             this.isDisplayed = true;
            category = ActionCategory.Custom;
            title = "Rogo LipSync - Play";
            description = "Starts playing a LipSyncData clip on a LipSync component";
            isPlayer = true;
            canInterrupt = true;
        }
 
         override public float Run()
        {
             if (isPlayer)
            {
                 lipSyncTarget = KickStarter.player.GetComponent<LipSync>();

                if (lipSyncTarget == null)
                {
                    Debug.LogWarning("RogoLipSync_Play: No LipSync component found on Player.");
                    return 0f;
                }
            }
 
             else if (lipSyncTarget == null)
            {
                 Debug.LogWarning("RogoLipSync_Play: No LipSync component defined.");
                return 0f;
            }
 
             if (dataClip == null)
            {
                 Debug.LogWarning("RogoLipSync_Play: No LipSync clip defined.");
                return 0f;
            }
 
             lipSyncTarget.Play(dataClip);
            return 0f;
        }
 
 
         override public void Skip(){

        }
 
 
 
 #if UNITY_EDITOR
        override public void ShowGUI()
        {
             isPlayer = EditorGUILayout.Toggle("Is player?", isPlayer);

            if (!isPlayer)
            {
                 lipSyncTarget = (LipSync)EditorGUILayout.ObjectField("Character:", lipSyncTarget, typeof(LipSync), true);
            }
             dataClip = (LipSyncData)EditorGUILayout.ObjectField("Clip:", dataClip, typeof(LipSyncData), true);
            canInterrupt = EditorGUILayout.Toggle("Can interrupt?", canInterrupt);
            AfterRunningOption();
        }
 #endif
     }
 }

-Original code provided by user Larsos-

Advertisement