这篇文章我只是简单的说下骨骼绑定的方法,为什么傻逼的写这篇文章呢,因为自己遇到了一个问题,就是官方的AvatarsDemo,将里面的模型替换成自己的模型后,它只跟随你前后左右移动,就是不跟你一起做动作,我去,忍不了
首先介绍一下骨骼绑定的第一种方法:导入模型,在其上添加两个脚本,KinectManager 和 AvatarController,骨骼就绑定了,它就能跟随你一起做动作了
对就是这么简单,然而今天做一个项目,怎么都不能跟我一起做动作,起先怀疑是模型的问题,后来我才发现,外包公司发来的是一个 Generic 类型的模型
所以,我们以后拿到模型如果是人形的骨骼,一定要转成 Humanoid 类型,一定要转成 Humanoid 类型,一定要转成 Humanoid 类型,重要的事情说三遍
(二)导入模型,在其上添加两个脚本,KinectManager 和 AvatarControllerClassic,将对应的模型关节点拖入到AvatarControllerClassic 脚本内赋值,如果你不想要它移动,你只需要把它的脚的关节都不给它赋值
2.新建一个对象 OffsetNode ,添加脚本组件 OffsetNodeMover,代码放文章最下面:
3.OK,运行看一下,这个时候模型的除了脚都会跟随人做动作,且你移动位置,模型是不会跟随你一起移动的,当你拖动 OffsetNode 时,模型也会跟着你一起移动
OffsetNodeMover.cs
using UnityEngine;
using System.Collections;
public class OffsetNodeMover : MonoBehaviour
{
[Tooltip("Speed at which the offset node will move through the scene.")]
public float moveSpeed = 1f;
[Tooltip("Smooth factor used for offset node movements.")]
public float smoothFactor = 1f;
void Update ()
{
float h = Input.GetAxis ("Horizontal");
float v = Input.GetAxis ("Vertical");
if (h != 0f || v != 0f)
{
Vector3 vMoveStep = new Vector3 (h * moveSpeed, 0f, v * moveSpeed);
Vector3 vMoveTo = transform.position + vMoveStep;
transform.position = Vector3.Lerp (transform.position, vMoveTo, Time.deltaTime * smoothFactor);
}
}
}