无题
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人物的多向移动动画