角色控制器。为了不让运动之后y轴发生其他变化。
碰撞检测。
Clip 下 添加curves 曲线。用来控制参数。
shift 滚轮, 上下放大, ctrl 滚轮,左右放大。
curves 曲线,去控制同名的参数。双击,打开曲线。
可以设置一段区间参数大于0.5,然后去禁用。
简化形式。
characterContrller.enabled = 一个bool判断表达式。
CharacterController会控制角色下降到地面上。
角色控制器。为了不让运动之后y轴发生其他变化。
碰撞检测。
Clip 下 添加curves 曲线。用来控制参数。
shift 滚轮, 上下放大, ctrl 滚轮,左右放大。
curves 曲线,去控制同名的参数。双击,打开曲线。
可以设置一段区间参数大于0.5,然后去禁用。
简化形式。
characterContrller.enabled = 一个bool判断表达式。
CharacterController会控制角色下降到地面上。
MatchTarget
身体某一部位和目标位置进行重合。
需要计算障碍物的高度,
hit.collider.bounds.size.y 获取物体的高度。
只是在locomotion 状态下才进行检测。
检测当前动画的状态。
anim.GetCurrentAnimatorStateInfo(0).IsName("locomotion");
matchTarget方法。
MatchTarget(目标位置,旋转度,骨骼模型点,mask(位置匹配程度,旋转程度。)) 1代表百分之百,匹配时间。
调试。
让手扶住墙之前让时间结束。
状态转换之间切换是没有作用的。就是那一小段时间间隔。
有辅助球,绿色的,当身体部位达到指定位置之后hui
通过matchTarget修改翻墙动画。
将身体某一部位与障碍物进行调试。
将手和墙进行匹配。
角色翻墙。
从大概膝盖的位置向前发射一条两米的射线进行检测,然后进行跳跃动作的设置。
anim.getfloat(对应id)获得相应数值。检测碰撞物体。
检测障碍物的方案。
射线检测。
控制摄像机的跟随。
标签查找角色。
插值运算。一边运动,一边平滑的过去。
lookAt 去看人物。
LateUpdate 放入 摄像机跟随用lateUpdate.
将offset 世界坐标转换成局部坐标。这样的话会根据自身身后的坐标偏移来进行计算。
通过标签查找player.
TransformDirction (offset)和人物背后建立了联系。
Lerp运算,考虑到平滑度的问题i,
transform.LookAt();去盯着一个东西。
2D混合方式区别。
2DSimple Directional 用来融合动画,动画都有一个不同的运动方向。不应该有同一个方向的动画。
2D Freedom Directional 用来有不同的方向。可以有多个动画在同一个方向上。
应该有一个idle动画在0,0的位置上。
2DFreedom Cartesian 所有动画都是在同一个方向上的。只是头会发生转向。一个旋转速度,一个线性速度。
通过混合树控制移动。
计算位置。 compute Position 选择x轴,然后选择旋转角度,deg。
通过朝向来融合数值。
blend Tree
一个轴上的变动用1D
两个轴的话用2D free.中间的
红点代表当前状态,然后三个蓝点分别代表不同的状态。
新创建两个Speed,用于和1d区分。
这个红点现在只能斜着拖动。
参数记得设置。不然只能进行拖动。
再添加动画,RunLeft, RunRight
混合树。。
Animator中, 右键,创建,blend Tree
双击进入混合树界面。双击空白地方回去。
只通过影响一个因素来组成动画, blend Type就是1D.
AddMotionField 添加动画
Automate Threholds 取消勾选,自己调整参数。
勾选后系统默认。
Adjust Time Scale 调整播放速度。
ResetTIme Scale 重置。
Threshold 混合参数。
混合树要想实现拖动红线进行预览,需要先将preview打开。然后才能正常查看。
前面为动画改变速度。后面为播放倍数。
系统会使动画变化更加平滑。
select 按照z 轴之后,参数范围变成0-5.这是动画在z轴上的移动素的。
系统给的范围是0到4.1 , 代码中修改值的时候就乘以速度的最大值。
控制角色转向。
因为rotation 和 xz 轴都要发生改变,所以不能。
左右方向键控制的数值。左方向键是-1到0.右方向键是0到1.
从左右转回来到跑的时候只用改变一个条件就行了。
bool
一条线上添加两个条件。
用Animator . StringToHash 来进行变化。防止重复写string。
int 类型的id 用来替换之前stirng。后面跟数值。或int,或bool
修改的时候查看是否loop match。变绿
去截取动画片段。切换时间。
状态机里有一个方法,可以将字符串转成hash值。hase 值就是一个id。
设置参数。将字符串转换成一个 hash 值是int值。?
对动画进行剪切。然后根据行动,然后bake不相关的。
切换时间缩短,进入下一动作也就会快。
多个人物,多个动画。
只要该人物的动画即可。
调整动画的时候,重复播放
loop time loop pose 平滑,
其他位置不用动,就都bake一下。这是humanoidd
骨骼映射。configuer里找一下。
同一个模型,不同的动画,可以使用同一个avatar。
Errors Found while///一个错误。
不是同一个模型,不能复制别人的avatar。
mirror。镜像,可以构造一下相反的
给模型重新添加材质和贴图。
动画重定向。
不一样的模型,avatar不能复制。
意思就是不能使用别人的avatar。
create from this model 然后检查一下映射。
主要是导入方式改为humanoid 。然后不同的模型创建不同的avatar。使用状态机,脚本ji
动画因为之前gereric 时保留了,
loop match 查看动画是否吻合。
导入Animation中,Humamoid.
Root Transform Rotation
将bake Into pose 勾选上,将旋转烘培到模型动作上。不会在对rotation造成影响。
Idle状态下,都可以勾选上bake into pose.
bake那相当于把那锁上了。不能移动了。
based upon 基于那个点来进行计算。朝向不太一样。
Original 设计师设计的。以哪里为中心进行运动。 feet 是unity自带的。一般不需要修改。
Root Transform Rotation 当动画的移动方向与人物朝向不匹配时,可以使用offset来进行偏移调整。