关于unity3d的模型动作问题
如图1,怎么做到一个模型同时播放两个动作,就像图中一样人物上半身播放持枪动作,而下半身却可以同时播放跑步动作。如图2,如何在一个动作的基础上加以修改,就像图中,在播放持枪...
如图1,怎么做到一个模型同时播放两个动作,就像图中一样人物上半身播放持枪动作,而下半身却可以同时播放跑步动作。如图2,如何在一个动作的基础上加以修改,就像图中,在播放持枪动作的情况下,玩家可以通过移动视角来让人物的上半身旋转。求具体代码
展开
展开全部
这两个问题都可以用遮罩来处理了。
对于问题1:新建一个动画层1,设定weight为1,然后新建一个avatar mask将不希望动的部分取消掉(在这里就是移动的时候的两条腿保持层0的移动动画)
对于问题2:还是新建一个动画层,设定为weight为1,然后新建一个avatar mask将不希望动的部分取消掉,勾选IK(反向动力学),然后用代码lookat鼠标位置就可以了。
//这个算是最简单的代码示例,应该还是比较适合你这个游戏的。
void OnAnimatorIK(int layer)
{
if (layer == 1) {
Vector3 possition = Camera.main.ScreenToWorldPoint (new Vector3(Input.mousePosition.x,Input.mousePosition.y,Camera.main.transform.position.z));
theAnimator.SetLookAtPosition (possition);
theAnimator.SetLookAtWeight (0.65f,0.9f,1f,1f,0.6f);
}
}
对于问题1:新建一个动画层1,设定weight为1,然后新建一个avatar mask将不希望动的部分取消掉(在这里就是移动的时候的两条腿保持层0的移动动画)
对于问题2:还是新建一个动画层,设定为weight为1,然后新建一个avatar mask将不希望动的部分取消掉,勾选IK(反向动力学),然后用代码lookat鼠标位置就可以了。
//这个算是最简单的代码示例,应该还是比较适合你这个游戏的。
void OnAnimatorIK(int layer)
{
if (layer == 1) {
Vector3 possition = Camera.main.ScreenToWorldPoint (new Vector3(Input.mousePosition.x,Input.mousePosition.y,Camera.main.transform.position.z));
theAnimator.SetLookAtPosition (possition);
theAnimator.SetLookAtWeight (0.65f,0.9f,1f,1f,0.6f);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询