Adventure Creator Wikia
Advertisement

Note: This AC action is meant to allow the usage of the "Interaction" features in FinalIK through AC's visual scripting. To use it replace the text in a .cs file named FinalIK_RunInteraction with this text, or create a new blank text file, then paste the text and rename the file FinalIK_RunInteraction.cs. Then drop the file into the folder named actions inside the Adventure creator folder.

Quote: in Unity, put the Fully Biped IK and Interaction System scripts on the character, then you are good to go. Go to Custom : Final IK : Run interaction and put the object in the action. And in the object the right affector.

This is the code:

using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;

#if UNITY_EDITOR
using UnityEditor;
#endif
 
 namespace AC
 {
 	[System.Serializable]
 	public class FinalIK_RunInteraction : Action
 	{
 		public bool isPlayer;
 		public InteractionSystem interactionSystem;
 		public FullBodyBipedEffector effector;
 		public InteractionObject interactionObject;
 		public bool canInterrupt;
 		
 		public FinalIK_RunInteraction()
 		{
 			this.isDisplayed = true;
 			category = ActionCategory.Custom;
 			title = "Final IK - Run interaction";
 			description = "Starts an interaction using the Final IK Interaction System";
 			isPlayer = true;
 			canInterrupt = true;
 		}
 		
 		override public float Run()
 		{
 			if (isPlayer)
 			{
 				interactionSystem = KickStarter.player.GetComponent<InteractionSystem>();
 				
 				if (interactionSystem == null)
 				{
 					Debug.LogWarning("FinalIK_RunInteraction: No InteractionSystem found on Player.");
 					return 0f;
 				}
 			}
 			else if (interactionSystem == null)
 			{
 				Debug.LogWarning("FinalIK_RunInteraction: No InteractionSystem defined.");
 				return 0f;
 			}
 			
 			if (interactionObject == null)
 			{
 				Debug.LogWarning("FinalIK_RunInteraction: No InteractionObject defined.");
 				return 0f;
 			}
 			
 			interactionSystem.StartInteraction(effector, interactionObject, canInterrupt);
 			return 0f;
 		}
 
 		override public void Skip(){
 
 
 		
 
 
 		}
 
 
 		
 		#if UNITY_EDITOR
 		override public void ShowGUI()
 		{
 			isPlayer = EditorGUILayout.Toggle("Is player?", isPlayer);
 			
 			if (!isPlayer)
 			{
 				interactionSystem = (InteractionSystem)EditorGUILayout.ObjectField("Character:", interactionSystem, typeof(InteractionSystem), true);
 			}
 			
 			effector = (FullBodyBipedEffector)EditorGUILayout.EnumPopup("Effector:", effector);
 			
 			interactionObject = (InteractionObject)EditorGUILayout.ObjectField("Interaction object:", interactionObject, typeof(InteractionObject), true);
 			canInterrupt = EditorGUILayout.Toggle("Can interrupt?", canInterrupt);
 			AfterRunningOption();
 		}
 		#endif
 	}
 }

-Code provided by Snebjorn and edited by PurpleShine-

-Quotes edited by Alverik-

Advertisement