- 出道即巅峰,先做个盈利千万的小项目
- 新建 Godot 项目
- Godot 界面介绍
- FlappyBird:1.Hello World
- FlappyBird:2.坠落吧,小鸟
- FlappyBird:3.在哪坠落就在哪飞起来
- FlappyBird:4. 无限地面
- FlappyBird:4.1 无限地面之 Godot 青年 (AnimationPlayer) 版
- FlappyBird:4.2 无限地面之普通青年版
- FlappyBird:4.3 无限地面之文艺青年(shader) 版
- FlappyBird:5.1 无尽水管子滚滚来(一)
- Godot Engine:5 种碰撞体以及 RigidBody 的 4 种模式
- Godot Engine:碰撞和碰撞检测的简单实例(RigidBody2D 与 Area2D 碰撞)
- Godot Engine:碰撞和碰撞检测的简单实例(RigidBody2D 与 StaticBody2D 碰撞)
- FlappyBird:5.2 无尽水管子滚滚来(二)
- Godot Engine:Timer 节点使用范例
- FlappyBird:6 来点 MUSIC(音效系统)
- Godot Engine:用自动加载(AutoLoad) 实现单例模式(Singleton Pattern)
- FlappyBird:7 心里有数(计分系统)
- Godot Engine:本地数据存取的帮助类(加密/非加密)
- FlappyBird:8 让数据说话(显示分数)
- Godot Engine:如何使用外部字体和 Label 节点制作一个计时器
- FlappyBird:9.1 天下没有不 OVER 的 GAME(上)
- Godot Engine:两行代码实现观察者模式(Observer Pattern),就问你服不服?
- FlappyBird:9.2 天下没有不 OVER 的 GAME(下)
- FlappyBird:10 大不了从头再来(新局启动)
- Godot Engine:用 Call Method Track(方法回调轨道)实现动画回调
- FlappyBird:11 番外篇:罗永浩都抖音了,要不咱们也抖一抖?(屏幕震动)
- Godot Engine:屏幕振动效果的实现
FlappyBird:3.在哪坠落就在哪飞起来
上一章节 《[手把手带你 Godot 游戏开发]FlappyBird:2.坠落吧,小鸟》 我们已经实现了小鸟的坠落,那么这一章节我们要让它飞起来了
本章节效果图
首先我们把"Rigidbody2D"更名为"Bird",前文已经提到 要保持场景树上每个节点的命名规范合理
接下来,我们要开始写代码了,大家要养成另外一个好习惯,那就是 要保持项目资源整洁 。所以先建一个专门用于存放代码文件的目录(项目资源的管理方式并不唯一,但一定要“有法可依有法必依”)
命名为“Scripts”
为“Bird”添加脚本
把这个脚本的存储路径定位到刚建的"Scripts"文件夹,注意:这个脚本文件的文件名是“Bird.gd”,让节点上的脚本名称和这个节点的名称相同可以便于我们管理代码文件,但这不是必须的。创建完毕
双击这个文件,会看到,Godot 已经填写了一些默认的代码
本章节使用的 RigidBody2D
类继承关系 PhysicsBody2D < CollisionObject2D < Node2D < CanvasItem < Node < Object
,并且只用到了 Node
类中的生命周期方法 _physics_process(delta)
相关内容请看 《Node 类:生命周期》
将上面代码中不必要的部分去掉,输入下面的代码,然后运行一下
注意 代码的解释将放在代码片段的注释中
# Bird.gd
extends RigidBody2D
func _physics_process(delta):
if Input.is_mouse_button_pressed(1):#当按鼠标左键时
linear_velocity = Vector2.UP*500#给它一个竖直向上的线性速度
看,我们只用了 4 行代码,就实现了这么多的效果和功能
接下来,我们想让小鸟像片头图那样 扬头飞翔低头下坠 。
这个细节并不影响游戏的玩法和难度。但是确实影响 游戏体验 ,一扬一坠扣人心弦。 大家可以体会一下
# Bird.gd
extends RigidBody2D
func _physics_process(delta):
if Input.is_mouse_button_pressed(1):
linear_velocity = Vector2.UP*500
angular_velocity = -3.0#同时给它一个逆时针的角速度
嗯?头扬得有点过了
加一些限定条件
# Bird.gd
extends RigidBody2D
func _physics_process(delta):
if Input.is_mouse_button_pressed(1):
linear_velocity = Vector2.UP*500
angular_velocity = -3.0
if rotation_degrees < -30:#最大仰角 30 度
rotation_degrees = -30
angular_velocity = 0
if linear_velocity.y > 0.0:#下坠时给它一个顺时针的角速度
angular_velocity = 1.5
这样,飞翔的效果就更有灵魂了!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论