不知道写啥
Unity
碰撞检测
首先是有碰撞,所以要加上组件Cllider类型组件和Rigidbody组件。
在Rigidbody栏的功能中有个碰撞检测
离散功能是间接性的检测是否发生碰撞,可用于节省性能。
而持续则是更高一层的碰撞检索
而在3D还有连续动态和Continiuous Speculative。
在Constraints中可以锁定物体在某一方向上的transform在碰撞的时候不会发生改变。
在碰撞的检测中
官方有3个方法来检测是否发生碰撞
1)
首先是对于碰撞发生开始的检测
当脚本搭载的物体与其他物体发生碰撞后会执行以下方法一次。
private void OnCollisionEnter(Collision collision)
{
}
其中collision的内容就是碰撞对象。
同时执行函数主体一次
2)
其次是持续碰撞
private void OnCollisionStay(Collision collision)
{
}
3)
结束碰撞
private void OnCollisionExit(Collision collision)
{
}
触发器
在Collision组件中,打开触发器功能后,这时候物体本身时不再会有碰撞体积的。
当物体成为触发器后,可以通过物体身上的脚本来判断。
下面是触发器触发时就会执行下面这个方法。
private void OnTriggerEnter(Collider collider)
{
}
同样是持续和触发结束,跟前面的碰撞检测差不多。
反向动力学
在实现模型的动画运动时,有两种实现方法
一是从胳膊处往下走带动整只手,叫做正向动力学。
二是从手腕处往回走带动整只手,叫做反向动力学。
现在用IK实现
首先是对于动画器的层级处设置可以进行IK
之后通过C#脚本实现
例如头部看向某个位置
private void OnAnimatorIK(int layerIndex)
{
//要实现动画,首先要设置头部的IK
animator.SetLookAtWeight(1);
//此时把自身头部物体的权重设置为1
animator.SetLookAtPosition(/*填坐标*/);
//这时候就可以让人物的头看向某个坐标。
}