Removed support for Animator parameters support
This feature was always more theoretical than practical
This commit is contained in:
parent
abab50dc76
commit
168e30c094
@ -377,24 +377,11 @@ namespace Passer {
|
|||||||
|
|
||||||
#region Animations
|
#region Animations
|
||||||
|
|
||||||
private SerializedProperty animatorParamForwardProp;
|
private void InitAnimations(HumanoidControl humanoid) { }
|
||||||
private SerializedProperty animatorParamSidewardProp;
|
|
||||||
private SerializedProperty animatorParamRotationProp;
|
|
||||||
private SerializedProperty animatorParamHeightProp;
|
|
||||||
|
|
||||||
|
|
||||||
private void InitAnimations(HumanoidControl humanoid) {
|
|
||||||
|
|
||||||
animatorParamForwardProp = serializedObject.FindProperty("animatorParameterForwardIndex");
|
|
||||||
animatorParamSidewardProp = serializedObject.FindProperty("animatorParameterSidewardIndex");
|
|
||||||
animatorParamRotationProp = serializedObject.FindProperty("animatorParameterRotationIndex");
|
|
||||||
animatorParamHeightProp = serializedObject.FindProperty("animatorParameterHeightIndex");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool showAnimatorParameters = false;
|
bool showAnimatorParameters = false;
|
||||||
private void AnimatorInspector(HumanoidControl humanoid) {
|
private void AnimatorInspector(HumanoidControl humanoid) {
|
||||||
AnimatorControllerInspector(humanoid);
|
AnimatorControllerInspector(humanoid);
|
||||||
AnimatorParametersInspector(humanoid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AnimatorControllerInspector(HumanoidControl humanoid) {
|
private void AnimatorControllerInspector(HumanoidControl humanoid) {
|
||||||
@ -423,44 +410,6 @@ namespace Passer {
|
|||||||
EditorGUILayout.EndHorizontal();
|
EditorGUILayout.EndHorizontal();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AnimatorParametersInspector(HumanoidControl humanoid) {
|
|
||||||
if (showAnimatorParameters && humanoid.animatorEnabled && humanoid.targetsRig.runtimeAnimatorController != null) {
|
|
||||||
if (animatorParameterNames == null)
|
|
||||||
animatorParameterNames = GetAnimatorParameters(humanoid);
|
|
||||||
|
|
||||||
EditorGUI.indentLevel++;
|
|
||||||
|
|
||||||
GUIContent forwardSpeedText = new GUIContent(
|
|
||||||
"Forward Speed",
|
|
||||||
"Animator parameter controlling the forward motion animation"
|
|
||||||
);
|
|
||||||
animatorParamForwardProp.intValue = SetAnimatorInput(forwardSpeedText, animatorParamForwardProp.intValue, ref humanoid.animatorParameterForward);
|
|
||||||
|
|
||||||
GUIContent sidewardSpeedText = new GUIContent(
|
|
||||||
"Sideward Speed",
|
|
||||||
"Animator parameter controlling the sideward motion animation"
|
|
||||||
);
|
|
||||||
animatorParamSidewardProp.intValue = SetAnimatorInput(sidewardSpeedText, animatorParamSidewardProp.intValue, ref humanoid.animatorParameterSideward);
|
|
||||||
|
|
||||||
GUIContent turnSpeedText = new GUIContent(
|
|
||||||
"Turn Speed",
|
|
||||||
"Animator parameter controlling the rotation animation"
|
|
||||||
);
|
|
||||||
animatorParamRotationProp.intValue = SetAnimatorInput(turnSpeedText, animatorParamRotationProp.intValue, ref humanoid.animatorParameterRotation);
|
|
||||||
|
|
||||||
GUIContent headHeightText = new GUIContent(
|
|
||||||
"Head Height",
|
|
||||||
"Animation parameter controlling the squatting animation"
|
|
||||||
);
|
|
||||||
animatorParamHeightProp.intValue = SetAnimatorInput(headHeightText, animatorParamHeightProp.intValue, ref humanoid.animatorParameterHeight);
|
|
||||||
|
|
||||||
EditorGUI.indentLevel--;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
showAnimatorParameters = false;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
protected GUIContent[] animatorParameterNames;
|
protected GUIContent[] animatorParameterNames;
|
||||||
public GUIContent[] GetAnimatorParameters(HumanoidControl humanoid) {
|
public GUIContent[] GetAnimatorParameters(HumanoidControl humanoid) {
|
||||||
if (humanoid == null || humanoid.targetsRig.runtimeAnimatorController == null)
|
if (humanoid == null || humanoid.targetsRig.runtimeAnimatorController == null)
|
||||||
|
@ -9,57 +9,6 @@
|
|||||||
/// when setting the Runtime Animator Controller parameter which is standard
|
/// when setting the Runtime Animator Controller parameter which is standard
|
||||||
/// [Unity Animator Controller](https://docs.unity3d.com/Manual/class-AnimatorController.html).
|
/// [Unity Animator Controller](https://docs.unity3d.com/Manual/class-AnimatorController.html).
|
||||||
///
|
///
|
||||||
/// Humanoid Control can control the animator controller using a number of float Animation
|
|
||||||
/// Parameters. These can be set in the Params section and refer to the
|
|
||||||
/// [Animation Parameters](https://docs.unity3d.com/Manual/AnimationParameters.html)
|
|
||||||
/// of the Animator Controller.
|
|
||||||
///
|
|
||||||
/// float Forward Speed | The forward/backward speed. Negative is backward walking. Unit is units(meters) per second.
|
|
||||||
/// float Sideward Speed | The left/right speed. Negative is left strafing. Unit is units(meters) per second
|
|
||||||
/// float Turn Speed | The turning speed around the Y axis. Negative is turning left. Unit is full rotations (360 degrees) per second.
|
|
||||||
/// float Head Height | The head height relative to the standing position. Negative is crouching. Positive is reaching up. Unit is meters.
|
|
||||||
///
|
|
||||||
/// Please note the unit of the parameters. Great care should be paid to this when creating the animations,
|
|
||||||
/// because it is not possible to use root motion (see below).
|
|
||||||
/// If the animation root speed does not match the required units of speed,
|
|
||||||
/// you can adjust them using the Speed parameter of the Animation State (see
|
|
||||||
/// [Unity3d – Animation States](https://docs.unity3d.com/Manual/class-State.html)).
|
|
||||||
/// For example, when the turning animation is set up such that it takes 4 seconds for a full rotation,
|
|
||||||
/// the Speed parameter should be set to 0.25.
|
|
||||||
///
|
|
||||||
/// Root Motion
|
|
||||||
/// ===========
|
|
||||||
/// or the animations to work well they should not contain root motion.
|
|
||||||
/// This is because we need to be able to move the character from the VR headset,
|
|
||||||
/// not from the animation, or players will get motion sickness.
|
|
||||||
///
|
|
||||||
/// To get the right behaviour, ensure that the following options are checked on the imported animations:
|
|
||||||
///
|
|
||||||
/// Loop Time -> Loop Pose
|
|
||||||
/// Root Transform Rotation -> Bake Into PoseRoot Transform Position(Y) -> Bake Into Pose
|
|
||||||
/// Root Transform Position(XZ) -> Bake Into Pose
|
|
||||||
///
|
|
||||||
/// Animation Restrictions
|
|
||||||
/// ======================
|
|
||||||
/// The animations are controlled by the Animation Parameters which are derived from the head movements.
|
|
||||||
/// In order to match the movements of the player, the animations should be set in a specific way.
|
|
||||||
///
|
|
||||||
/// - The animation being player when Forward Speed = 1 should ensure
|
|
||||||
/// that the head speed is exactly 1 unit(meter) per second.
|
|
||||||
/// If the head speed in the animation is different you may see feet slipping
|
|
||||||
/// over the ground because the animation is played too fast or too slow.
|
|
||||||
/// - The Forward Speed should only have effect on the forward/backward (Z-axis) speed of the avatar.
|
|
||||||
/// If this is not ensured, the animations will be wrong.
|
|
||||||
/// For example when the head moves to the left when forward speed = 1, the sideward speed will also be activated,
|
|
||||||
/// resulting in unwanted animations.
|
|
||||||
/// - The same is true for the Sideward Speed and Turn Speed,
|
|
||||||
/// but then limited to the sideward (X-axis) motion and rotation along the Y axis.
|
|
||||||
/// - The Head height is used to change the vertical position of the avatar.
|
|
||||||
/// A value of -0.3 can result in a crouching with even lower values resulting in a crawling position.
|
|
||||||
/// Positive values like 0.1 can result in a reaching position when the avatar stands on his toes.
|
|
||||||
/// - As with the other parameters, the Head Height parameter should only have effect
|
|
||||||
/// on the Y position of the head.All other movements must be avoided in this animation.
|
|
||||||
///
|
|
||||||
/// Targets
|
/// Targets
|
||||||
/// =======
|
/// =======
|
||||||
/// When the Animation option is enabled on the Humanoid Control script,
|
/// When the Animation option is enabled on the Humanoid Control script,
|
||||||
|
@ -44,7 +44,6 @@ namespace Passer.Humanoid {
|
|||||||
Animator targetAnimator = hipsTarget.humanoid.targetsRig;
|
Animator targetAnimator = hipsTarget.humanoid.targetsRig;
|
||||||
// Don't use procedural if the animator controller plays an animation clip
|
// Don't use procedural if the animator controller plays an animation clip
|
||||||
if (targetAnimator.runtimeAnimatorController != null &&
|
if (targetAnimator.runtimeAnimatorController != null &&
|
||||||
hipsTarget.humanoid.animatorParameterForward == null &&
|
|
||||||
targetAnimator.GetCurrentAnimatorClipInfoCount(0) > 0)
|
targetAnimator.GetCurrentAnimatorClipInfoCount(0) > 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -384,7 +384,7 @@ namespace Passer.Humanoid {
|
|||||||
if (humanoidNetworking != null) {
|
if (humanoidNetworking != null) {
|
||||||
|
|
||||||
if (remoteAvatar != null) {
|
if (remoteAvatar != null) {
|
||||||
Possessable avatarPossessable = remoteAvatar.GetComponent<Possessable>();
|
Possessable avatarPossessable = remoteAvatar.GetComponent<Possessable>();
|
||||||
if (avatarPossessable == null)
|
if (avatarPossessable == null)
|
||||||
humanoidNetworking.ChangeAvatar(this, fpAvatarPrefab.name);
|
humanoidNetworking.ChangeAvatar(this, fpAvatarPrefab.name);
|
||||||
else
|
else
|
||||||
@ -1330,7 +1330,6 @@ namespace Passer.Humanoid {
|
|||||||
UpdateTargetsAndMovements();
|
UpdateTargetsAndMovements();
|
||||||
CalculateVelocityAcceleration();
|
CalculateVelocityAcceleration();
|
||||||
|
|
||||||
UpdateAnimation();
|
|
||||||
UpdatePoseEvent();
|
UpdatePoseEvent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2178,7 +2177,7 @@ namespace Passer.Humanoid {
|
|||||||
float leftFootBoneDistance = leftFootTarget.foot.bone.transform.position.y - leftFootTarget.foot.target.transform.position.y;
|
float leftFootBoneDistance = leftFootTarget.foot.bone.transform.position.y - leftFootTarget.foot.target.transform.position.y;
|
||||||
float rightFootBoneDistance = rightFootTarget.foot.bone.transform.position.y - rightFootTarget.foot.target.transform.position.y;
|
float rightFootBoneDistance = rightFootTarget.foot.bone.transform.position.y - rightFootTarget.foot.target.transform.position.y;
|
||||||
if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F)
|
if (leftFootBoneDistance > 0.02F && rightFootBoneDistance > 0.02F)
|
||||||
AdjustTrackingHeight(-0.01F);
|
AdjustTrackingHeight(-0.01F);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2336,35 +2335,6 @@ namespace Passer.Humanoid {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#region Animation
|
#region Animation
|
||||||
public string animatorParameterForward;
|
|
||||||
public string animatorParameterSideward;
|
|
||||||
public string animatorParameterRotation;
|
|
||||||
public string animatorParameterHeight;
|
|
||||||
|
|
||||||
// needed for the Editor
|
|
||||||
public int animatorParameterForwardIndex;
|
|
||||||
public int animatorParameterSidewardIndex;
|
|
||||||
public int animatorParameterRotationIndex;
|
|
||||||
public int animatorParameterHeightIndex;
|
|
||||||
|
|
||||||
private void UpdateAnimation() {
|
|
||||||
if (targetsRig.runtimeAnimatorController != null) {
|
|
||||||
if (animatorParameterForward != null && animatorParameterForward != "") {
|
|
||||||
targetsRig.SetFloat(animatorParameterForward, velocity.z);
|
|
||||||
}
|
|
||||||
if (animatorParameterSideward != null && animatorParameterSideward != "") {
|
|
||||||
targetsRig.SetFloat(animatorParameterSideward, velocity.x);
|
|
||||||
}
|
|
||||||
if (animatorParameterRotation != null && animatorParameterRotation != "") {
|
|
||||||
targetsRig.SetFloat(animatorParameterRotation, turningVelocity);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (animatorParameterHeight != null && animatorParameterHeight != "") {
|
|
||||||
float relativeHeadHeight = headTarget.neck.target.transform.position.y - avatarNeckHeight;
|
|
||||||
targetsRig.SetFloat(animatorParameterHeight, relativeHeadHeight);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void PostAnimationCorrection() {
|
private void PostAnimationCorrection() {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user