我们先观察一下现实中的洲际导弹
1:一般都是由发射井,发射车,潜艇,航母,以及其他一些发射平台发射的。
2:发射角度一般都是垂直的。
3:发射时的速度是逐步加速的。
4:到达一定高度或者速度的时候开始转向。
5:有自己的定位系统
6:有自己的反拦截系统。
7:有一定的灵活机动性
8:等等(我不是做导弹的,这些都是可以看见的,还有一堆看不见的东西请自己发掘)
有了上面的资料我们就可以去模拟洲际导弹了
1:需要创建一个洲际导弹类。
2:洲际导弹的属性一般有
a:模型或图片(可能还有特效)
b:向量(飞行方向)
c:当前速度
d:加速度
e:最大速度
f:转向速度(旋转速度)
g:最小旋转速度
h:最低旋转高度
i:攻击目标
j:搜寻范围
k:飞行时间
l:飞行时间上限
m:碰撞体
n:弹头(不同的弹头爆炸后有不同的效果)
3:洲际导弹需要有个每一帧都执行的方法来不停的更新自己的属性。比如update
4:洲际导弹还需要有一个start方法,这个方法里给属性赋予初始值(一般把当前速度赋值为0)。并且启动update方法
5:update方法里更新数据的顺序
a:更新飞行时间(飞行时间+=这一帧刷新的时间)
b:更新飞行速度((当前速度+(当前速度+加速度)*这一帧刷新的时间)与最大飞行速度的最小值)。为什么是(当前速度+加速度)*这一帧刷新的时间而不是加速度*这一帧刷新的时间,因为速度是弧线递增的,不是直线递增的
c:更新飞行方向(如果最低旋转高度和最小旋转速度都达到了就可以更新飞行方向了,(需要旋转的角度*旋转速度*这一帧的时间)这个值与需要旋转的角度取最小值+当前角度)。如何旋转一个向量点击这里
d:需要在update 里更新炮弹的位置 (方向*速度*这一帧执行的时间+当前的炮弹的位置)
e:需要在update里检查敌方的拦截武器(就是发现除了目标以为的东西像自己飞来时,可以采取避让和制造分身的方式等等来躲避拦截)
f:如果目标消失了就在update里搜寻搜寻范围内的目标。
g:没有目标时直线飞行
h:在update里检查炮弹是否与可以发生碰撞的东西发生了碰撞,如果碰撞了就爆炸(爆炸交给弹头处理)
i:检查飞行时间是否达到上限,如果到了就爆炸
j:爆炸后销毁炮弹
弹头也需要写一个类(因为有不同的弹头)
1:弹头属性
a:爆炸范围
b:攻击力
c:可能还有攻击类型,攻击属性,buff,等等。看你是什么弹头了。
2:弹头有一个方法那就是放爆炸
3:爆炸时检测是否有敌人在爆炸范围内。有的话一起受到伤害和buff的影响
讲完收工(是不是简单到爆)
欢迎转载,转载请标明出处