En esta sección representaciones
Las aves de caer al agua marcó el final de un juego, vamos a utilizar dos capítulos que hacer algunos retoques a la misma:
1. Las aves "fuera de control" caída
Fuera de control se refiere a la colisión más tarde, el ave no será controlada por el usuario de nuevo volar
# 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 < -30:
rotation_degrees = -30
angular_velocity = 0
if linear_velocity.y > 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. Detener la creación de nuevas tuberías de agua
#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. existentes paradas agua en movimiento
#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 < 0:
queue_free()
func on_game_over():
set_process(false) #停用_process(delta)
4. Detener puntuación área de activación
Esta sección es para evitar que una parte del tiempo, el ave había muerto, pero aún así salir de la zona de tiro, iniciando así la puntuación. Por supuesto, si establece las reglas del juego permitir que esto suceda, este paso no puede manejar
#ScoreArea.gd
extends Area2D
func _ready():
add_to_group("GAME_STATE")
connect("body_exited",self,"_on_body_exited")
func _on_body_exited(_body):
if _body.name == "Bird":
AudioManager.play("sfx_point")
GameData.score += 1
#加分以后通过SceenTree把新的分数更新给所有想接受这个消息的节点
get_tree().call_group("SCORE_UPDATED","on_score_updated",GameData.score)
func on_game_over():
call_deferred("set_monitoring",false)#得分区域停止触发
El desplazamiento parada de planta
Recuerde? Planta de desplazamiento infinita Se utilizaron tres métodos para lograr, esta sección utiliza una "versión literaria de la juventud." Si está utilizando otras versiones, poner esto como parte de un pensamiento él!
#Floor.gd
extends Sprite
func _ready():
add_to_group("GAME_STATE")
func on_game_over():
material.set_shader_param("speed",0)
6. Los extremos del juego de la interfaz de usuario emergente
Esta sección es más, continúe con la siguiente sección