godot 案例解析 Twin Stick 2D Shoot Em Up -1

大致了解godot的操作后,就直接上案例把,完整的框架别人已经搭好了。
直接看main scene

很直观的,类吸血鬼幸存者的游戏,需要手动设计。
大致分四部分
1、UI
2、main_character
3、粉色方框的敌人生存区域
4、碰撞墙体

一、UI
直接看main_scene的代码

很正常的初始化与显示。有一个中间event展示不知道干嘛。
二、character

大概分为五部分:
1、碰撞体
2、贴图
3、开火
4、移动
5、死亡
①、碰撞体
如上图,就是一个球形碰撞体,但是gun部分不碰撞。
②、贴图
如上图,一个蛋,一根黑棍子
③、开火
1、 如果火力全开,双倍射速,持续10秒

2、如果shoot返回不为0,切计时器跑马大于充能时间:
就bullet.instantiate()实例化一个子弹
把子弹加入到main_scene中,和character为姊妹关系
获取bulletspawn的世界坐标(枪口的那个十字架)
设置bullet的direction(移动方向)为鼠标和他自己之间的向量方向(area_direction为bullet的自己的变量)
相机设置位移,其中位移是随机-4~4的float的2D区间

这两种方法任选,不能var Bullet,必须说明它是scene,个人推荐@export,然后可以在操作界面中修改。

④、移动


看向鼠标,调整自己的rotation,当然也可以
set_rotation(global mouse-global self ).normalize()


⑤、死亡


就算把死亡删了也没关系。
总结character:作者为了演示一些操作,真的是煞费苦心。
三、生成区域
①、银币生成和大力丸生成

②、生成敌人

tips:get node("animationplayer").play("spawn")并不是下面的function spawn()。
而是

总结:animationplayer比unreal的差太远太远了。有总比没有好一丁点吧。
四、墙体

就碰撞体+贴图
总结:毫无悬念的没有难度,不过add_sibling和call_deferred需要注意下