上一章节 《[手把手带你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 0.0:#下坠时给它一个顺时针的角速度
angular_velocity = 1.5
这样,飞翔的效果就更有灵魂了!