[Manos con que el desarrollo del juego Godot] Flappy Bird: 9,1 partes del mundo no es un juego (en)

En esta sección representaciones

Aquí Insertar imagen Descripción

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!
Aquí Insertar imagen Descripción

#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

Publicados 382 artículos originales · ganado elogios 1250 · Vistas de 190.000 +

Supongo que te gusta

Origin blog.csdn.net/hello_tute/article/details/105148296
Recomendado
Clasificación