当前位置:   article > 正文

Unity 目标约束与父子约束 拉箭动作的实现_unity中实现拉伸箭头功能

unity中实现拉伸箭头功能

①调整箭的轴心与坐标轴朝向

使轴心处于箭的尾部,使蓝轴朝向箭指向的方向

②创建空对象Body、Head,调整到它们对应的位置,以便后续的开发

③给箭添加父子约束,让箭的尾部约束在手指上

给箭添加目标约束,让箭的头部指向预留的弓箭瞄准位置

让角色暂时保持射击那一瞬间的动画,就可以看见效果了

④把箭做成预制体

由于约束源是场景物体,无法保存在预制体中,所以我们用代码来设定

这里有一个坑,就是目标约束在用代码设定时,无法激活,可能是一个bug

应对的方法是先取消激活,再激活,这就可以了

至于为什么,我也不知道,试了好久才找到解决方法,感觉是一个黑盒

  1. arrow = PoolManager.Instance.getObject("Arrow", "Prefabs/Weapons/Arrow");
  2. Destroy(arrow, 10f);
  3. arrow.transform.SetParent(bow.parent);
  4. arrow.transform.localPosition = new Vector3(0,0,0);
  5. ConstraintSource aimConstraintSource = new ConstraintSource() { sourceTransform = ArrowHeadPos, weight = 1 };
  6. arrow.GetComponent<AimConstraint>().SetSources(new List<ConstraintSource>() { aimConstraintSource });
  7. arrow.GetComponent<AimConstraint>().constraintActive = true;
  8. //AimConstraint只有在启用时才会激活
  9. arrow.GetComponent<AimConstraint>().enabled = false;
  10. arrow.GetComponent<AimConstraint>().enabled = true;
  11. ConstraintSource parentConstraintSource = new ConstraintSource() { sourceTransform = ThumbFinger1_R, weight = 1 };
  12. arrow.GetComponent<ParentConstraint>().SetSources(new List<ConstraintSource>() { parentConstraintSource });
  13. arrow.GetComponent<ParentConstraint>().constraintActive = true;
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/127952
推荐阅读
相关标签
  

闽ICP备14008679号