首页 > 编程知识 正文

unity一个物体多个碰撞体,unity如何添加树

时间:2023-05-04 20:29:31 阅读:157216 作者:4159

首先,我将大致介绍几个Unity混合树。 混合树有各种各样的模式。

1. 1D混合:只有一个参数:横坐标。 垂直轴为动作权重,且对于横轴上的每一点,对应的每一动作权重的总和为100%。 每个动作分支都有自己的100%权重,这意味着只播放这个动作。 此值左侧为淡入,右侧为淡出。 Threshold的范围可以自由设定,但无论如何,引擎最后都会被归一化处理。

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

2. 2D混合: 2D混合还细分为简单目录、自由形式、自由形式三种模式。 这三个模式官方文档第建议个,每个位移方向只用于一个动作; 第二种用于同时有多个位移方向,根据方向有多个运动的情况; 第三个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; namespaceblendtreetest { publicclassplayerwalktest : mono behaviour { privateanimatorplayerwalk; 公共转换能量; void Awake () player walk=getcomponentanimator ); } void Update () transform.lookat ) enemy ); floatx=input.getaxis (horizontal ); floaty=input.getaxis(vertical ); if(x==0y==0) playerwalk.setbool(iswalk ),false ); } else { player walk.set bool (' is walk ',true ); playerwalk.setfloat('blendx ',x ); playerwalk.setfloat('Blendy ',y ); } } }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。