【搬运】【Unity】使用IK更改UnityChan的注视方向

这篇博客介绍了如何在Unity中利用IK(Inverse Kinematics)改变UnityChan的注视方向,避免使用Transform.LookAt方法可能导致的身体不自然转动。首先配置UnityChan模型,启用IK,然后创建C#脚本LookAtController,通过SetLookAtWeight和SetLookAtPosition方法调整UnityChan视线跟随鼠标移动。
摘要由CSDN通过智能技术生成

【搬运】【Unity】使用IK更改UnityChan的注视方向

前言

在项目过程中需要用到相关功能,正好看到了这个教程,没有找到适合的翻译博客,就自己翻译了一下用于学习。
下面是原文链接:日语原帖链接

简介

在Unity中,经常使用Transform.LookAt的方法来改变物体面朝目标。这种情况下,可能会有不自然的现象发生,例如身体在一起转了一圈。
这篇文章将介绍使用IK改变UnityChan注视方向的方法
在这里插入图片描述

前期布置

在Inspector面板上配置UnityChan的模型。为了显示WAIT动画,将UnityChan/Animation文件夹中的动画控制机UnityChanLocomotions一并拖入。
在这里插入图片描述
操作完成后,UnityChan将被赋予动画,在游戏运行后开始播放WAIT动画文件。
在这里插入图片描述

使UnityChan与IK值对应

为了按照IK来移动UnityChan,需要在AnimatorController中完成IK相应配置。
UnityChanLocomotions窗口打开后,点击画面左侧BaseLayer层级的齿轮图标,打开菜单底部的IKPass按钮。
在这里插入图片描述
完成步骤后,UnityChan的IK就能够使用了。

UnityChan跟随鼠标移动

最后一步,UnityChan的视线跟随鼠标移动。新建C#脚本取名为LookAtController,保存后将下面代码复制。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class LookAtController : MonoBehaviour {

    Animator animator;
    Vector3 targetPos;

    void Start () {
        this.animator = GetComponent<Animator> ();    
        this.targetPos = Camera.main.transform.position;
    }
    
    void Update () {
        if (Input.GetMouseButton (0))
        {
            Vector3 touchPos = Camera.main.ScreenPointToRay (Input.mousePosition).origin;
            touchPos.z = -0.5f;
            targetPos = touchPos;
        }
    }

    private void OnAnimatorIK(int layerIndex)
    {
        this.animator.SetLookAtWeight(1.0f, 0.8f, 1.0f, 0.0f, 0f);
        this.animator.SetLookAtPosition(this.targetPos);
    }
}

这里的SetLookAtWeight方法与SetLookAtPosition方法通过控制IK对UnityChan进行动作的修改和控制。
SetLookAtWeight是调整身体、头部、目光追随程度(权重)的方法。
SetLookAtWeight的参数如下:

参数含义
weight全身权重
bodyWeight身体运动权重
headWeight头部运动权重
eyesWeight视线运动权重
clampWeight动作限制量

这里利用第二个变量(bodyWeight)来指定身体对鼠标的追随程度。
此外,利用第三个变量(headWeight)来决定头部对数表的追随程度。

**SetLooaAtPosition指定UnityChan的注视方向。**本文为鼠标点击坐标。
将脚本拖拽到UnityChan身上进行链接。
在这里插入图片描述
鼠标在屏幕中间移动,UnityChan会跟随着旋转移动。

结尾

其实我还没有试过,等我试完了再来补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值