【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来

上一章节 《[手把手带你Godot游戏开发]FlappyBird:2.坠落吧,小鸟》我们已经实现了小鸟的坠落,那么这一章节我们要让它飞起来了

本章节效果图

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第1张图片

首先我们把"Rigidbody2D"更名为"Bird",前文已经提到要保持场景树上每个节点的命名规范合理
【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第2张图片

接下来,我们要开始写代码了,大家要养成另外一个好习惯,那就是要保持项目资源整洁。所以先建一个专门用于存放代码文件的目录(项目资源的管理方式并不唯一,但一定要“有法可依有法必依”)
【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第3张图片
命名为“Scripts”
【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第4张图片

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第5张图片
为“Bird”添加脚本
【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第6张图片
把这个脚本的存储路径定位到刚建的"Scripts"文件夹,注意:这个脚本文件的文件名是“Bird.gd”,让节点上的脚本名称和这个节点的名称相同可以便于我们管理代码文件,但这不是必须的。
【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第7张图片创建完毕

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第8张图片

双击这个文件,会看到,Godot已经填写了一些默认的代码

本章节使用的RigidBody2D类继承关系PhysicsBody2D < CollisionObject2D < Node2D < CanvasItem < Node < Object,并且只用到了Node类中的生命周期方法_physics_process(delta)相关内容请看《Node类:生命周期》

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第9张图片
将上面代码中不必要的部分去掉,输入下面的代码,然后运行一下

注意 代码的解释将放在代码片段的注释中

# Bird.gd
extends RigidBody2D

func _physics_process(delta):
	if Input.is_mouse_button_pressed(1):#当按鼠标左键时
		linear_velocity = Vector2.UP*500#给它一个竖直向上的线性速度

看,我们只用了4行代码,就实现了这么多的效果和功能

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第10张图片

接下来,我们想让小鸟像片头图那样扬头飞翔低头下坠

这个细节并不影响游戏的玩法和难度。但是确实影响游戏体验,一扬一坠扣人心弦。 大家可以体会一下

# Bird.gd
extends RigidBody2D

func _physics_process(delta):
	if Input.is_mouse_button_pressed(1):
		linear_velocity = Vector2.UP*500
		angular_velocity = -3.0#同时给它一个逆时针的角速度

嗯?头扬得有点过了

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第11张图片

加一些限定条件

# 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

这样,飞翔的效果就更有灵魂了!

【手把手带你Godot游戏开发】FlappyBird:3.在哪坠落就在哪飞起来_第12张图片

你可能感兴趣的:(Godot笔记,老王的游戏开发教程,手把手带你Godot游戏开发,游戏开发)