第一个GoDot游戏,方块碰撞
弄了动画以后,就当然得开始交互了。 涉及的内容一下子多了起来。

读取玩家输入(非IO)
作为游戏 自然要接受鼠标键盘什么的输入,官方教材是让我们使用 process 来处理。
这样做 会导致每一帧都尝试去处理业务,由于玩家的输入是复杂的,所以你得做大量判断,玩家是前进还是后退,有没有开枪什么的,甚至还要判断是否有组合键。
我很奇怪为什么要这样做,似乎有点浪费资源
这是一个非常简单的演示,让玩家可以自己控制 上下两个方向,同时防止滑出边界

游戏内的OBJ 之间的交互
这次只做一个非常简单的碰撞检测,刚才做的那个小方块,会自动前进不受控制,我们只能控制上下,然后尝试让它去撞另外一个方块,撞到了 就给你计分。
游戏教程 让我们先new一个 Area2D 的类,说只有这个类才能判断 区域进入事件 、区域离开事件。然后在下面new一个形状 来声明它的面积,当然 游戏嘛。。。我还得给它弄上画面,最后是这样的

区域--形状--画面--动画设计,其中动画设计 估计是不需要放里面的 也许可以全部动画都统一集中来管理 不过无所谓了 这样也很好的体现他们的关系
然后,游戏要我们new其他的物件,就是能够撞我们的东西,称之为 RigidBody2D
这个东西挺有趣的,你可以理解为真实物件,但引擎只会视为刚体来计算,不知道有没有流体可以玩?
同时自带重力系统,很多手机上的模拟重力和碰撞的游戏 都可以做了。
然后碰撞事件也很简单,只需要在对应事件 on body enter 里面绑定我们的Func即可


我们可以看见, 引擎是有消息机制的,我们定义了一个 Hit 事件,并且在撞击后,将其Fire出去,让其他控件来接收。就刚才说的,我不理解为什么要用 process 来处理,而不用消息机制来处理玩家的操作输入。
游戏非常简单 我就不发布了 简单来说就是控制一个方块 去撞 另外一个会乱飞方块 然后给你打分

我的目标是做3D FPS,下次开始从3D场景试试看。
哦 对了 我是完全自学的,官网上有手册可以下载,应该没有中文版,其中会附带一些例子,学得有点慢,毕竟已经不当程序员很多年了。。。嘿嘿嘿