飞机大战中,敌机的角色是必不可少的,其运动轨迹有很多种,简单点的,用初中、高中的几何知识,也能创建不少。
例如:圆圈
radius = 200
for angle in range(0,361,10):
a = angle*math.pi/180
pos_x = radius *math.sin(a)
pos_y = radius *math.cos(a)
稍微复杂点 sin函数,控制下中心点y坐标(300)和振幅(200),也能实现很多
for x in range(0,SCENEWIDTH):
pos_x = x
angle = x *math.pi/180
pos_y = 200*math.sin(angle)+300
再例如抛物线函数,螺旋曲线函数,都能实现飞机的各种花样轨迹。
调试下各个参数的数值,顺便温故下初中高中的知识,也是很有乐趣的。
但简单、易行且路径花样繁多的公式,还是得用到贝塞尔曲线方式。可以自行百度,太神奇了。
参考下阿呆的入门介绍。
http://www.cnblogs.com/wjtaigwh/p/6647114.html
看下n 阶贝塞尔曲线计算公式实现
https://www.jianshu.com/p/7c56103dcf63
编写了一个容易理解点的 python的实现方式。
用到了下面的知识点
----------------------------------------------------------------
- N = 3: P = (1-t)^2P0 + 2(1-t)tP1 + t^2*P2
- N = 4: P = (1-t)^3P0 + 3(1-t)^2tP1 + 3(1-t)<