【Unity3D】IK动画

本文详细介绍了Unity3D中的反向运动学(IK)原理,它允许手部动作带动肩部自然运动。通过一个实例——角色瞄准射击,展示了如何使用IK动画在不破坏原有动画的情况下,使枪口精确对准目标。文章包含了一个脚本组件的代码示例,用于实现这一功能。
摘要由CSDN通过智能技术生成

1 IK简介

        2D动画人体模型及动画人物跟随鼠标位置中介绍了 Aniamtion、Animator、人体模型、人体骨骼、人体动画等基础知识及人体动画的应用,本文将进一步介绍 IK 动画。​​ 

        反向运动学(Inverse kinematics,IK)反映的是一种由手部带到肩部的运动形式,在这个运动中,运动以手部这个自由端为起始,当手部进行运动时会自然的带动固定端肩部的运动。

        通常情况下(如:用手端起一个杯子),由肩部带到手部运动,而 IK 是由手部带到肩部运动,所以这种运动学称为反向运动学。IK 的例子有:手触电、被别人牵着走、开枪时手的抖动。

        IK 的作用主体是人体,受力来自外部,Unity3D 提供的 IK 端点有首部和足部。

2 IK动画

        本节以“瞄准敌人并开枪射击敌人”为例,讲解 IK 动画的使用。瞄准敌人并开枪射击敌人,是一个手部和臂部的动画,使用 Transform 组件可以很容易实现角色朝向敌人,但是较难控制枪口对准敌人,如果直接使用 Transform 组件对枪口位置进行调整,虽然能够对准敌人,但是破坏了动画。使用 IK 动画,能够做到在不破坏动画的前提下使枪口对准敌人。

        1)开启 IK Pass

         2)脚本组件

using UnityEngine;

public class IKController : MonoBehaviour {
	public Transform target;
	private Animator animator;

	private void Awake() {
		animator = GetComponent<Animator>();
	}

	private void OnAnimatorIK(int layerIndex) {
		// 设置IK权重
		animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
		// 设置IK位置
		animator.SetIKPosition(AvatarIKGoal.RightHand, target.position);
		// 设置眼睛的IK权重
		animator.SetLookAtWeight(1);
		// 设置眼睛的IK位置
		animator.SetLookAtPosition(target.position);
	}
}

        说明:脚本组件挂在人物对象上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

little_fat_sheep

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值