Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为混合树设置浮动?_C#_Unity3d - Fatal编程技术网

C# 为混合树设置浮动?

C# 为混合树设置浮动?,c#,unity3d,C#,Unity3d,因此,我目前正在创建一个基于的第三人称控制器,并尝试使用其他功能(如推送对象)扩展第三人称控制器。第三人称控制器没有刚体或任何东西,因为它使用的是CharacterController组件。我已经在播放器前面创建了一个光线投射,检查播放器前面的对象是否是可推的,工作正常。当播放器前面的对象是可推的对象时,动画制作者中的bool ispush设置为true,动画制作者进入混合树。此混合树由2个动画组成;idlePushAnimation和walkingPushAnimation,它们由浮点“spe

因此,我目前正在创建一个基于的第三人称控制器,并尝试使用其他功能(如推送对象)扩展第三人称控制器。第三人称控制器没有刚体或任何东西,因为它使用的是CharacterController组件。我已经在播放器前面创建了一个光线投射,检查播放器前面的对象是否是可推的,工作正常。当播放器前面的对象是可推的对象时,动画制作者中的bool ispush设置为true,动画制作者进入混合树。此混合树由2个动画组成;idlePushAnimation和walkingPushAnimation,它们由浮点“speedPercentPush”控制。这就是我被卡住的地方。如何使玩家在推送状态下不移动时,浮动设置为“0”,而CharacterController在推送状态下移动时,浮动设置为“1”

最后,我要找的是:

anim.SetFloat("speedPercentPush", I think this should be something like either 0 or 1, speedSmoothTime, Time.deltaTime);

您可以采用
CharacterController
水平速度,并将其分配给
混合树
浮点值,如下所示:

公共字符控制器;
矢量3水平速度=控制器速度;
浮动水平速度;
无效更新(){
如果(isPushing){
controller.setBool(“isPushing”,true);
水平速度=新矢量3(controller.velocity.x,0,controller.velocity.z);
水平速度=水平速度.量级;
控制器.setFloat(“speedPercentPush”,水平速度);
}否则{
控制器.setFloat(“speedPercentPush”,0);
controller.setBool(“isPushing”,false);
}

}
你能发布blendtree的图片吗?我昨晚也在做类似的工作,但在动画和播放时间方面仍然存在问题。昨晚我在检查控制器。速度!=Vector3.0,这是一种工作,我不得不说我当时没有使用混合树。但问题是,当播放器处于空闲推送状态时,如果您远离可推送对象,它将始终转到WalkingPush动画,因为存在移动。这是当我意识到我需要一个混合树,但也需要另一个检查运动是否朝向可推动的对象。我想说的是,你的解决方案是正确的,但我认为它需要更多的检查。我认为应该检查运动是否朝向可推动物体,当有速度朝向该物体时,浮动速度百分比推动应为“1”,如果没有朝向该物体的运动,则应为“0”。我该如何加上额外的支票?目前你的解决方案是只检查x轴,但游戏是3d的,它不应该也检查z轴吗?很抱歉,我现在明白了,完全错过了z轴检查。因此,应该再检查一次玩家是否在可推动对象的方向上移动,如果这是真的,则浮动应该设置为1。在你的问题中,你说过,你已经通过光线投射检查了移动方向。因此,您可以使用bool在update函数中再进行一次检查。请看编辑后的答案。很抱歉反应太晚,但我终于让它起作用了。我发现的另一件重要事情是在blendtree中的动画上设置treshold。