1,想法来源
在游戏中,需要实现一个跳跃的功能,我最开始用的是重力加速度。即水平速度不变,垂直速度加等于重力,但策划觉得不好调。
最后决定使用固定的曲线函数实现,即X轴速度不变,Y轴按照距离最高点的距离求位置。
这样就可以就联想到了正弦函数。
2,正弦函数
标准的正弦函数如下:
代码实现如下:
double a = 30;
// converting value to radians
double b = (a * (Math.PI)) / 180;
// using method and displaying result
Console.WriteLine(Math.Sin(b));
a = 45;
// converting value to radians
b = (a * (Math.PI)) / 180;
// using method and displaying result
Console.WriteLine(Math.Sin(b));
a = 60;
// converting value to radians
b = (a * (Math.PI)) / 180;
// using method and displaying result
Console.WriteLine(Math.Sin(b));
a = 90;
// converting value to radians
b = (a * (Math.PI)) / 180;
// using method and displaying result
Console.WriteLine(Math.Sin(b));
打印结果为:
0.5
0.707106781186547
0.866025403784439
1
3,推导函数
有了以上储备,我们就可以得到如下函数
X轴正常运行
//Y轴代码如下
坐标Y值=高度系数 * Mathf.Sin((1 - (Mathf.Abs(坐标X值 - 最高点X值) * (1/(起点X值-最高点X值)))) * 0.5f * Mathf.PI);