Unity Live2D SDK的使用方法(三)——自动眨眼与看向指针方向
自动眨眼
Step1:设置管理器
定义成员变量
private EyeBlinkMotion eyeBlinkMotion;
在start中实例化
eyeBlinkMotion = new EyeBlinkMotion();
Step2:进行实时更新
在update中调用方法
eyeBlinkMotion.setParam(live2DModel);
live2DModel是Live2DModelUnity类的对象。也就是模型的信息。
看向指针方向
Step1:设置管理器
定义成员变量:
private L2DTargetPoint drag;
在start中进行实例化:
drag = new L2DTargetPoint();
Step2:坐标信息转换
将鼠标点击的屏幕坐标转换为live2d坐标轴的坐标
if (Input.GetMouseButton(0))
{
drag.Set(pos.x / Screen.width * 2 - 1, pos.y / Screen.height * 2 - 1);
}
else if (Input.GetMouseButtonUp(0))
{
drag.Set(0, 0);
}
live2d坐标轴为(-1,1)区间的横纵坐标轴。
Step3:将鼠标点击信息进行实时更新
drag.update();
Step4:看向点击位置的逻辑
if (drag.getX() != 0)
{
live2DModel.setParamFloat("PARAM_ANGLE_X", 30 * drag.getX());
live2DModel.setParamFloat("PARAM_ANGLE_Y", 30 * drag.getY());
live2DModel.setParamFloat("PARAM_BODY_ANGLE_X", 10 * drag.getX());
live2DModel.setParamFloat("PARAM_EYE_BALL_X", -drag.getX());
live2DModel.setParamFloat("PARAM_EYE_BALL_Y", -drag.getY());
}
setParamFloat的参数有两个。
第一个是字符串形式的ID,在Cubism上可以看到。→
第二个是变动的值。可以看到在上图中,眼睛的范围是-1.0-1.0的区间,而之前在上一步操作中drag转化成的live2d坐标轴也是一个-1.0-1.0的范围,所以就直接用drag.getX()或drag.getY()获取就好。对于其它的部分,比如头的转向,可能其范围是-30.0-30.0,就要用30*drag.getX()。