Animator是用来播放状态机的!
Animation就是用来播放动画的!
Animator是用来播放状态机的!
Animation就是用来播放动画的!
RaycastHit.point 在世界空间中,射线碰到碰撞器的碰撞点。
一:
Animator 的Layers里设置AvatarMask ,给该层设置影响肢体的位置
二:
IK动画:
在Animator Layers勾选IK Pass。
重写OnAnimatorIK(每帧调用),使肢体部位绑定到指定方位:
//调整位置一致(试过了,在Update里无效)
Animator.SetIKPosition(AvatarGoal,Position)
Animator.SetIKPositionWeight(AvatarGoal,float)
//调整方向一致
Animator.SetIKRotation(AvatarGoal,Position)
Animator.SetIKRotationWeight(AvatarGoal,float)
//AvatarGoal是个枚举,有4个值:
LeftHand,RightHand,RightFoot,LeftFoot
像视频一样材质的贴图丢失了,想修改发现材质界面变灰色无法修改。
网上的办法:
点击模型,
在Materials栏Location项,
修改为Use External Materials(Legacy)就可以了。(就算再修改这项为原来的,材质也是可以编辑的状态,不知道为什么。)
1,选中物体,菜单栏window,animation。 点击create。
Pre-Extrapolate:物体动画播放前的行为。
Post-Extrapolate:物体动画播放完的行为。
CharacterController(角色控制器):相当于Rigidbody(刚体)和Collider(碰撞器)的结合体
anim.MatchTarget(matchTarget, Quaternion.identity, AvatarTarget.LeftHand, new MatchTargetWeightMask(Vector3.one, 0), 0.38f, 0.5f);
matchTarget:匹配的其中一个碰撞物体的碰撞点的坐标(课程中讲到的左手按在黄色墙壁上的那个点)。
Quaternion.identity:暂时不明。
AvatarTarget.LeftHand:匹配的其中一个碰撞物体(课程中讲到的左手)。
new MatchTargetWeightMask(Vector3.one, 0):暂时不明。
0.38f, 0.5f:碰撞匹配计算的开始时间和结束时间。
无用补充:blender工程文件后缀名是.blend
2D Blending:
2D Simple Directional:不允许接受同一方向的动画,如往前走(walkforward)和往前跑(runforward)的动画。
2D Freeform Directional:
2D Freeform Cartesian:适合用在物体动画只在一个方向上移动的时候。
动画重定向:可以让同一类型的人形模型使用同一种动画(Animation Type为Humanoid时可用)。
Optimize Game Objects(优化模型):隐藏模型部分节点,让模型更简洁。
Humanoid:可以通过代码来控制动画让模型进行移动(Generic)。
Avater Mask:
void MatchTarget (Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask,float startNormalizedTime, float targetNormalizedTime)
能够看出,在该方法中。我们指定了匹配的位置、角度、身体的详细部分、权重、匹配開始及匹配结束的时间。
2D Simple Directional
用于不同方向的动画混合,不允许相同方向出现
2D Freeform Directional
用于不同方向的动画融合,允许相同方向出现
2D Freeform Cartesian
所有动画在同一方向
按钮动画
2D精灵动画
1.动画编辑器:关键帧模式 --> 曲线模式
只放大纵向:shift + 滚轮
2.调节动画曲线的斜率、光滑度
关于新版Samples动画帧数设置的显示
private Animator anim;
private speed=0;
void Start()
{
anim = GetComponent<Animator>();
}
void Update()
{
float v = Input.GetAxisRaw("Vertical");
anim.SetInteger("Vertical",(int)v);
//移动
//transform.Translate(Vector3.forward*Time.deltaTime*speed);
}
tiskinnedmeshrenderer 找到模型里带材质的物件
Animation是动画机
Animatior是状态机,专门播放动画机的