首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >统一三维火炮后坐力动画IK问题

统一三维火炮后坐力动画IK问题
EN

Stack Overflow用户
提问于 2022-05-28 01:41:49
回答 1查看 332关注 0票数 2

我有麻烦的手IK的-recoil拍摄动画-这是在一个覆盖层在动画。我有它的设置,以便当我瞄准(左扳机),它允许我用另一个按钮(右扳机)。我有它,所以重量(手IK)增加到1(在钻机层)当我瞄准和减少到0当我放开瞄准按钮。

问题是,如果我开枪(使用后坐力枪动画),然后立即放开目标按钮,动画将继续播放,但IK将到0,手将看起来一团糟。

我试着把IK手枪的重量设定为1当他开火时,所以他仍然会抓住它,但是它不起作用,因为只有当目标被按住时,射击才是真的。

所以总的来说,我开枪,他做了一个后坐力动画,当你过早放弃瞄准,动画看起来一团糟,就像他从背后向你挥手。就像它会中止动画之类的。

代码语言:javascript
复制
  private void HandleMovementInput()
  {
    horizontalMovementInput = movementInput.x;
    verticalMovementInput = movementInput.y;
    animatorManager.HandleAnimatorValues(horizontalMovementInput, verticalMovementInput, runInput); 

    if (verticalMovementInput != 0 || horizontalMovementInput !=0) //running
    {
       

        if (aimingInput)                                                  
        {
            
            if (animatorManager.isAimingGunn == false)
            {
                shootInput = false;                                                                 
                
            }
        }
    }

    if (animatorManager.isAimingGunn)
    {
       
        animatorManager.leftHandIK.weight = 1; // IK weight
        animatorManager.rightHandIK.weight = 1;


        horizontalMovementInput = 0f; // joystick
        verticalMovementInput = 0f;
    }

    else if(animatorManager.isAimingGunn == false)
    {
       
        if(verticalMovementInput != 0 || horizontalMovementInput !=0) //running
        {
            animatorManager.leftHandIK.weight = 0;
        }

        animatorManager.leftHandIK.weight = 0; // IK weight
        animatorManager.rightHandIK.weight = 0;
      
    }
 
}
     
     private void HandleShoot()
{
    if (aimingInput) // must aim otherwise shootInput(right trigger on controller) wont work
    {
        if (shootInput)
        {
            shootInput = false;
            playerManager.UseCurrentWeapon();
        }

    }
}
EN

回答 1

Stack Overflow用户

发布于 2022-05-29 19:07:16

我能修好它。我使用这段代码告诉角色继续瞄准,如果仍然在当前的animation.This允许动画完成之前,您将手IK设置为0。

代码语言:javascript
复制
      if(animator.GetCurrentAnimatorStateInfo(1).IsName("Pistol_Shoot"))
        {
            aimingInput = true;
        }

另外,由于它变得过于复杂,我将“目标取消”按钮更改为控制器上的左上角触发器(而aim位于左下角触发器)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72412338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档