using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; [Serializable] public class MotionCondition : SerializableCallback { } [Serializable] public class JointMotion { #region 序列化 public string desc; public JointMotionInfo info; public MotionCondition condition; #endregion #region 私有字段 public Rigidbody m_Rig; #endregion public void Animate(Rigidbody hip) { if (condition.target != null && condition.Invoke() == false) return; Vector3 dir = Vector3.zero; if (info.direction == JointMotionInfo.MoveDirection.Swing) { dir = m_Rig.transform.right; } if (info.direction == JointMotionInfo.MoveDirection.FollowHip) { dir = hip.velocity.normalized; } if (info.type == JointMotionInfo.MotionType.Torque) { m_Rig.AddTorque(dir * Time.deltaTime * info.forceMultiplier, ForceMode.Acceleration); } if (info.type == JointMotionInfo.MotionType.Force) { m_Rig.AddForce(dir * Time.deltaTime * info.forceMultiplier, ForceMode.Acceleration); } } }