基于两个vector3完美定位对象?

时间:2015-09-09 15:00:59

标签: c# unity3d

制作一个基本的圆柱游戏对象,并将其缩放为(0.01,10,0.01)。它应该看起来像一根直立的棍子。

我想做的事情(在c#中)是基于两个vector3动态定位和旋转此棒。第一个是FROM并代表棒的最底部,而TO是棒的最顶部。

如果已经内置的方法可以做到这一点很棒但是在使用Transform和Quaternion中的各种方法进行实验后,我似乎无法完美地完成这项工作。

2 个答案:

答案 0 :(得分:2)

首先,缩放指针以适应两个点(向量)ab之间。缩小距离以获得比例,因为立方体高2个单位。

stick.transform.localScale = new Vector3(0.01, 0.01, (a - b).magnitude * 0.5f);

然后将杆的中心定位在两点之间。

stick.transform.position = (a + b) * 0.5f;

然后旋转摇杆。

stick.transform.LookAt(b);

如果你真的有一个模特,你可能会注意到棍子的方向是错误的。 Unity按惯例使用+ Z作为转发。您可以通过旋转操纵杆作为最后一步或将模型放入操纵杆的子变换并旋转模型以使+ Z向前移动来解决此问题。如果操纵杆未在正确的位置居中,可能是因为原点不在模型的中心或模型的宽度不正确。您可以采用与方向相同的方式解决此问题,或修改代码。

答案 1 :(得分:1)

无论您想做什么,请停止并使用line renderer