IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity 2D 混合树小例子 -> 正文阅读

[游戏开发]Unity 2D 混合树小例子

首先大致介绍下几种Unity混合树:Blend Tree,可以有多种模式:

1. 1D混合:只有一个参数,即横坐标。纵坐标是动作权重,横轴上每一个点,对应的各动作权重之和为100%。每个动作分支有自己的100%权重点,即只播放这一个动作。这个值左边是淡入、右边是淡出。Threshold的范围随便设,反正引擎最后都会归一化处理。

1D混合适用于单轴状态过渡,如:idle==>walk==>run==>fast run的速度过渡。Runleft==>Run forward==>RunRight的转角过渡。

2. 2D混合:2D混合又细分了 Simple Directional(方向单一)、Freeform Directional(方向自由)、Freeform Cartesian(笛卡尔自由)三种模式。这三种模式官方文档建议:第一种用于每个位移方向只有一个动作;第二种用于有多个位移方向的同时,有的方向会有多个动作;第三种的X、Y轴就不是表示两个位移方向了,你可以定义一个轴为旋转,一个轴为位移。

3. Direct直接混合模式:混合树里套混合树,似乎适用于复杂的标签控制等。

接下来我介绍下我试验的一个小例子,用一下2D混合模式。

资源是Unity商店里的剑术动作包,里面有一套不同方向的走路动画,包括:向东、西、南、北,以及4个对角线方向,共8个方向的走路动画。这些动画有一个共同点:目光方向都是一个。如下图,看地面的Root Transform罗盘,走路方向是向左,大致为红箭头方向,但Body 的forward方向是蓝箭头方向。

把这8个动作(勾选Apply Root Motion)放入混合树,加上idle,9个动作,形成了如下的圆形阵列。idle在中间,8个方向的走路放到对应方向的坐标位置。参数为BlendX和BlendY,用虚拟轴控制。红点表示当前参数坐标,有圈的点是参与动画融合的点,圈的大小表示权重。

?

?附上代码,通过IsWalk参数把状态转移到混合树里。这里还加了个“敌人”,最后的效果是玩家始终看向敌人的“决斗模式”:

using UnityEngine;

namespace BlendTreeTest
{
    public class PlayerWalkTest : MonoBehaviour
    {
        private Animator playerWalk;
        public Transform enemy;

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

        void Update()
        {
            transform.LookAt(enemy);
            float x = Input.GetAxis("Horizontal");
            float y = Input.GetAxis("Vertical");
            if (x == 0 && y == 0)
            {
                playerWalk.SetBool("IsWalk", false);
            }
            else
            {
                playerWalk.SetBool("IsWalk", true);
                playerWalk.SetFloat("BlendX", x);
                playerWalk.SetFloat("BlendY", y);
            }
        }
    }
}

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-08-19 12:23:28  更:2021-08-19 12:24:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/4 10:37:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码