返回介绍

FlappyBird:3.在哪坠落就在哪飞起来

发布于 2025-04-26 18:34:23 字数 3479 浏览 0 评论 0 收藏

上一章节 《[手把手带你 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。