赞
踩
①调整箭的轴心与坐标轴朝向
使轴心处于箭的尾部,使蓝轴朝向箭指向的方向
②创建空对象Body、Head,调整到它们对应的位置,以便后续的开发
③给箭添加父子约束,让箭的尾部约束在手指上
给箭添加目标约束,让箭的头部指向预留的弓箭瞄准位置
让角色暂时保持射击那一瞬间的动画,就可以看见效果了
④把箭做成预制体
由于约束源是场景物体,无法保存在预制体中,所以我们用代码来设定
这里有一个坑,就是目标约束在用代码设定时,无法激活,可能是一个bug
应对的方法是先取消激活,再激活,这就可以了
至于为什么,我也不知道,试了好久才找到解决方法,感觉是一个黑盒
- arrow = PoolManager.Instance.getObject("Arrow", "Prefabs/Weapons/Arrow");
- Destroy(arrow, 10f);
- arrow.transform.SetParent(bow.parent);
- arrow.transform.localPosition = new Vector3(0,0,0);
-
- ConstraintSource aimConstraintSource = new ConstraintSource() { sourceTransform = ArrowHeadPos, weight = 1 };
- arrow.GetComponent<AimConstraint>().SetSources(new List<ConstraintSource>() { aimConstraintSource });
- arrow.GetComponent<AimConstraint>().constraintActive = true;
-
- //AimConstraint只有在启用时才会激活
- arrow.GetComponent<AimConstraint>().enabled = false;
- arrow.GetComponent<AimConstraint>().enabled = true;
-
- ConstraintSource parentConstraintSource = new ConstraintSource() { sourceTransform = ThumbFinger1_R, weight = 1 };
- arrow.GetComponent<ParentConstraint>().SetSources(new List<ConstraintSource>() { parentConstraintSource });
- arrow.GetComponent<ParentConstraint>().constraintActive = true;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。