您当前的位置: 首页 >  游戏

开发游戏的老王

暂无认证

  • 3浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【手把手带你Godot游戏开发】FlappyBird:9.1 天下没有不OVER的GAME(上)

开发游戏的老王 发布时间:2020-03-27 21:18:02 ,浏览量:3

本章节效果图

在这里插入图片描述

小鸟撞上水管标志着一局游戏的结束,我们会用两个章节为它做一些收尾工作:

        • 1.小鸟“失控”坠落
        • 2.停止制造新的水管
        • 3.现存水管停止运动
        • 4.得分区域停止触发
        • 5.地面停止滚动
        • 6. 游戏结束的UI弹出

1.小鸟“失控”坠落

失控指的是发生碰撞以后,小鸟将无法再次受用户控制飞起来

# Bird.gd
extends RigidBody2D

func _ready():
	connect("body_entered",self,"on_body_entered")

func _physics_process(delta):
	if Input.is_mouse_button_pressed(1):
		AudioManager.play("sfx_swooshing")
		linear_velocity = Vector2.UP*500
		angular_velocity = -3.0
	if rotation_degrees  0.0:
		angular_velocity = 1.5

func on_body_entered(_body):
	if _body is StaticBody2D:#碰撞以后
		call_deferred("set_physics_process",false)#停用_physics_process(delta)
		call_deferred("set_contact_monitor",false)#关闭碰撞检测
		AudioManager.play("sfx_hit")#播放碰撞音效
		$AnimationPlayer.play("die")#动画切换到死亡状态
		GameData.update_record()#更新最好成绩记录
		get_tree().call_group("GAME_STATE","on_game_over")#调用GAME_STATE的on_game_over方法

2.停止制造新的水管
#PipeManager.gd
extends Timer

var pipe_scn = preload("res://Objects/Pipe.tscn")

func _ready():
	add_to_group("GAME_STATE")#加入GAME_STATE组
	connect("timeout",self,"on_timeout")
	
func on_timeout():
	var pipe = pipe_scn.instance()
	add_child(pipe)

func on_game_over():
	paused = true#停止计时

3.现存水管停止运动
#Pipe.gd
extends Node2D

func _ready():
	add_to_group("GAME_STATE") #加入GAME_STATE组
	position.y += randf()*300-150

func _process(delta):
	position += Vector2.LEFT*200.0*delta
	if position.x             
关注
打赏
1656935939
查看更多评论
0.0427s