为混合树设置浮点数?



所以我目前正在基于本教程创建一个第三人称控制器,我正在尝试使用推送对象等额外功能来扩展第三人称控制器。第三人称控制器没有刚体或任何东西,因为它使用的是角色控制器组件。我在播放器前面创建了一个光线投射,用于检查玩家面前的对象是否是可推的,工作正常。当玩家面前的对象是可推送对象时,动画器中的布尔值是推送设置为 true,动画器将转到混合树。此混合树由 2 个动画组成;idlePushAnimation和walkingPushAnimation,它们由浮点"speedPercentPush"控制。这就是我卡住的地方。我怎样才能做到当玩家在推动状态下不移动时,浮点设置为"0",当角色控制器在推動状态下移动时,浮点设置为"1"?

最后,我正在寻找类似的东西:

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

您可以获取CharacterController的水平速度并将其分配给blend tree浮点值,如下所示:

public CharacterController controller;
Vector3 horizontalVelocity = controller.velocity;
float horizontalSpeed;
void Update() {
if(isPushing){
controller.setBool("isPushing",true);
horizontalVelocity = new Vector3(controller.velocity.x, 0, controller.velocity.z);
horizontalSpeed = horizontalVelocity.magnitude;
controller.setFloat("speedPercentPush",horizontalSpeed );
}else{
controller.setFloat("speedPercentPush",0);
controller.setBool("isPushing",false);
}
}

另外,首先检查水平速度,您希望从空闲推送动画过渡到步行推送动画,并相应地设置blend tree参数的threshold
您可以查看本教程以了解有关blend trees的更多信息: https://www.youtube.com/watch?v=HeHvlEYpRbM

最新更新