Unity中的数学运算总结

来源:互联网 发布:linux mv f 编辑:程序博客网 时间:2024/05/16 01:01

最近在做一个抛物线的炸弹效果,利用的是抛物线方程计算位置从而实现抛物线的效果

大体的实现过程如下计算(只能实现固定点在z轴上的抛物线效果)

_thisTransform.position = new Vector3(_thisTransform.position.x, -0.05f * (Time.time * speed * Time.time * speed) + 2f * Time.time * speed, Time.time * speed);

具体参数可以自己根据实际需要(需要的垂直高度以及水平距离)更改,y=ax2+bx+c,最高点为(-b/2a, (4ac-b*b)/4a)。

难点在于坐标的计算与纠正,因为是炮弹自然需要跟随炮管的位置以及旋转而发射出炮弹

在上面的基础上设置一个vector3的变量pos存储炮管位置,实现跟随

发射方向可以通过分解向量计算得到,计算炮管z轴和世界z轴的夹角angleGun,通过该夹角分别计算在x轴和z轴上的分量,从而实现发射方向的纠正

最终公式为

   angleGun = Vector3.Angle(_thisTransform.forward, Vector3.forward) * Mathf.PI / 180f;

 _thisTransform.position =pos+ new Vector3(Time.time * speed * Mathf.Sin(angleGun), -0.125f * (Time.time * speed * Time.time * speed) + 2f *Time.time * speed, Time.time * speed * Mathf.Cos(angleGun))

憋了我半天的一个问题是mathf.sin这两个函数,计算总不对,纠结死了,经过实验mathf.sin(90)居然不是1,这下才最终发现,其参数angleGun应该是弧度数而非度数~就这一个点儿硬是绊住我半天。。。

唉,写在此引以为戒吧

a=-32/L*L(L为两者距离),b=32/L

0 0
原创粉丝点击