Unity 黑暗之魂复刻笔记
animator.gameObject下的sendmessage(委托消息机制)方法,性能亟待优化,其中sendmessageupwards方法可以检查对象的父对象中是否含有这个方法。

blend tree下的动画可以创建behaviour脚本,但是不是特别建议把太多的脚本创建到这个地方,因为这将会造成后续维护困难等等问题。

overlapCapsule可以用于快速检测两个物体是否已经相撞

在编辑动画的页面中选中某一个动画转换到下一个动画的箭头,在setting里面可以修改interrupt source使得人物在播放一个动画的途中可以被被打断。

你可以在project-setting里面更改所有物体的物理材质,
但是你也可以修改你角色碰撞体身上携带的值来修改物理材质

可以通过在动画的edit页面修改curve来修改动画的移动弧度,于此同时,这个curve里面的数值可以通过curve的名字来进行调用,具体可以在animator里面对应动画挂载的脚本事件里面进行调用。
比如,你可以通过anim.GetFloat(“”)这种方法来获取曲线值
animator里面调动的函数可以通过sendmessageupwards来调用父物体身上的脚本

OnAnimatorMove()这个函数可意义比较好的获取animate的移动信息,比如anim.deltaPosition可以获取动画物体这一帧相对于上一帧移动的距离。

模型里面往往有关节,可以把武器放到某一个关节下,之后这个武器会作为子物体跟随你的手进行移动。

-41 使用mirror动画来复制右手武器动画到左手

动画进行缓动的方式
1,lerp
2,smoothdamp
3,自制方程式

onAnimatorIK需要在animator的layers下面选中齿轮,然后勾选IK Pass

public class LeftArmAnimFix : MonoBehaviour
{
    // Start is called before the first frame update
    // 
    	private Animator anim;	

​    public Vector3 a;

​    private void Awake()
​    {
​        anim = GetComponent<Animator>();
​    }
​    private void OnAnimatorIK()
​    {
​        Transform leftLowerArm = anim.GetBoneTransform(HumanBodyBones.LeftLowerArm);
​        leftLowerArm.localEulerAngles = new Vector3(a, 0.0f, 0.0f);
​        anim.SetBoneLocalRotation( HumanBodyBones.LeftLowerArm , Quaternion.Euler(leftLowerArm.localEulerAngles));
​    }

}

使用overLapBox来实现锁定功能

可以使用2D Blender tree来实现3D人物的多向移动动画