unity3d - 如何使用动画绑定来击打目标?

我试图让我的角色在我的场景中打击不同的目标。我正在使用来自 Mixamo 的 https://www.mixamo.com/#/?page=1&query=punch 之一。如何在播放动画时让角色打到目标?任何建议表示赞赏!

回答1

我有点不确定你在问什么,但我认为是这样的:

您有多个动画,当您按下打孔按钮时,您希望播放打孔动画而不考虑任何其他动画。

如果这确实是您要问的,如果我错了请纠正我,您必须使用动画混合树来混合动画。

编辑

因此,在阅读了其他评论后,我可以向您解释如何做到这一点。答案保持不变 - 动画混合树。让我解释。

每个手臂/手都有两个动画。一种直接向前冲,另一种直接冲向侧面。

混合树本质上是两个动画之间不同程度的混合。在这种情况下,它将是 90 的物理度数。因此,假设敌人与左侧玩家成对角线(45 度),那么您将需要计算角度并将其传递给混合树,混合树将混合两个动画以获得您中间的东西。

所以你需要做的是:

  1. 获取两个动画,其中一个是出拳

  2. 为两个动画设置混合树

  3. 出拳时计算你面对的地方和敌人所在的位置之间的角度。像这样:

    public float max = 90;
    
     float GetBlendTreeInput() 
     {
         Vector3 forward = new Vector3(transform.forward.x, 0, transform.forward.z);
         Vector3 enemyDirection = enemyTransform.position - transform.position;
    
         enemyDirection = new Vector3(enemyDirection.x, 0, enemyDirection.y);
    
         float angle = Vector3.Angle(forward, enemyDirection);
         float clampedAngle = Mathf.Clamp(angle, 0, max);
    
         return clampedAngle / max;
    }
  4. 将其传递给混合树观察到的动画变量。

相似文章

随机推荐

最新文章