Added FinalIK
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using RootMotion.FinalIK;
|
||||
|
||||
namespace RootMotion.Demos {
|
||||
|
||||
/// <summary>
|
||||
/// Resets an interaction object to its initial position and rotation after "resetDelay" from interaction trigger.
|
||||
/// </summary>
|
||||
public class ResetInteractionObject : MonoBehaviour {
|
||||
|
||||
public float resetDelay = 1f; // Time since interaction trigger to reset this Transform
|
||||
|
||||
private Vector3 defaultPosition;
|
||||
private Quaternion defaultRotation;
|
||||
private Transform defaultParent;
|
||||
private Rigidbody r;
|
||||
|
||||
void Start() {
|
||||
// Store the defaults
|
||||
defaultPosition = transform.position;
|
||||
defaultRotation = transform.rotation;
|
||||
defaultParent = transform.parent;
|
||||
|
||||
r = GetComponent<Rigidbody>();
|
||||
}
|
||||
|
||||
// Called by the Interaction Object
|
||||
void OnPickUp(Transform t) {
|
||||
if (!enabled) return;
|
||||
StopAllCoroutines();
|
||||
StartCoroutine(ResetObject(Time.time + resetDelay));
|
||||
}
|
||||
|
||||
// Reset after a certain delay
|
||||
private IEnumerator ResetObject(float resetTime) {
|
||||
while (Time.time < resetTime) yield return null;
|
||||
|
||||
var poser = transform.parent.GetComponent<Poser>();
|
||||
if (poser != null) {
|
||||
poser.poseRoot = null;
|
||||
poser.weight = 0f;
|
||||
}
|
||||
|
||||
transform.parent = defaultParent;
|
||||
transform.position = defaultPosition;
|
||||
transform.rotation = defaultRotation;
|
||||
|
||||
if (r != null) r.isKinematic = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user