holopy3/Assets/Plugins/RootMotion/FinalIK/_DEMOS/FBBIK/Scripts/InteractionDemo.cs

74 lines
2.3 KiB
C#
Raw Normal View History

2020-12-10 14:25:12 +00:00
using UnityEngine;
using System.Collections;
using RootMotion.FinalIK;
namespace RootMotion.Demos {
/// <summary>
/// Simple demo controller for the InteractionSystem.
/// </summary>
public class InteractionDemo : MonoBehaviour {
public InteractionSystem interactionSystem; // Reference to the InteractionSystem of the character
public bool interrupt; // Can we interrupt an interaction of an effector?
// The interaction objects
public InteractionObject ball, benchMain, benchHands, button, cigarette, door;
private bool isSitting;
// GUI for calling the interactions
void OnGUI() {
interrupt = GUILayout.Toggle(interrupt, "Interrupt");
// While seated
if (isSitting) {
if (!interactionSystem.inInteraction && GUILayout.Button("Stand Up")) {
interactionSystem.ResumeAll();
isSitting = false;
}
return;
}
// While standing
if (GUILayout.Button("Pick Up Ball")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.RightHand, ball, interrupt);
}
if (GUILayout.Button("Button Left Hand")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.LeftHand, button, interrupt);
}
if (GUILayout.Button("Button Right Hand")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.RightHand, button, interrupt);
}
if (GUILayout.Button("Put Out Cigarette")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.RightFoot, cigarette, interrupt);
}
if (GUILayout.Button("Open Door")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.LeftHand, door, interrupt);
}
// This is a multiple-effector interaction
if (!interactionSystem.inInteraction && GUILayout.Button("Sit Down")) {
interactionSystem.StartInteraction(FullBodyBipedEffector.Body, benchMain, interrupt);
interactionSystem.StartInteraction(FullBodyBipedEffector.LeftThigh, benchMain, interrupt);
interactionSystem.StartInteraction(FullBodyBipedEffector.RightThigh, benchMain, interrupt);
interactionSystem.StartInteraction(FullBodyBipedEffector.LeftFoot, benchMain, interrupt);
interactionSystem.StartInteraction(FullBodyBipedEffector.LeftHand, benchHands, interrupt);
interactionSystem.StartInteraction(FullBodyBipedEffector.RightHand, benchHands, interrupt);
isSitting = true;
}
}
}
}