Unity 中的指向功能(动画中的骨骼指向,任意轴指向目标)

本文介绍了在Unity项目中如何实现角色骨骼的指向功能,特别是针对动画播放时的任意骨骼指向目标的需求。文章讨论了使用动画插值、IK以及Unity官方的Animation Job LookAt Demo的局限性,并分享了一个经过优化的直接计算骨骼朝向的脚本,该脚本提供更高的精度和便于调试的特性,适用于角色数量不多、骨骼数不多的情况。
摘要由CSDN通过智能技术生成

项目中遇到需要角色在播动画的时候某几个指定骨骼指向目标的需求。
如果只是手的话可以做8方向动画再用动画插值,或者用IK功能。
因为我们的需求比较简单,只是指向(没有握住之类的),但是任何动画中的任意骨骼都有可能需要指向,所以做动画融合比较费劲,就想到直接控制骨骼朝向来实现。

Unity官方有一个Demo实现了用Animation Job来做的LookAt:
https://blogs.unity3d.com/cn/2018/08/27/animation-c-jobs/

于是我们把这个放到项目中用了一段时间,官方的例子中没有考虑根节点的偏移和旋转,这个可以处理,但是实测之后发现指向的并不精准,并且由于动画流内部的数据很难调试,导致修复问题比较困难,虽然Job System性能很高,但是在角色数量不多,骨骼数不多的情况下直接计算也是可以的,以下是修改的直接计算骨骼朝向的脚本:

using System;
using UnityEngine;

///<summary>
///朝向功能测试脚本
///</summary>
public class TestLookAt : MonoBehaviour
{
    public enum Axis
    {
        Forward = 1,
        Back,
        Up,
        Down,
        Left,
        Right
    }

    //关节
    public Joints[] joints;
    //目标
    GameObject m_Target;

    //创建指向
    void CreateLookat()
    {
        if (joints == null || joints.Length ==
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值