Mudanças entre as edições de "Godot Engine: Hello Game World!"

De Aulas
Linha 37: Linha 37:
 
extends RigidBody2D
 
extends RigidBody2D
  
var speed = 100
+
var speed = 10000
var jumpSpeed = -200
+
var jumpSpeed = -20000
 
var jumping = true
 
var jumping = true
  
Linha 53: Linha 53:
 
elif Input.is_action_pressed("ui_right"):
 
elif Input.is_action_pressed("ui_right"):
 
velocity.x += speed
 
velocity.x += speed
$AnimatedSprite.flip_h = false
+
$AnimatedSprite2D.flip_h = false
 
elif Input.is_action_pressed("ui_left"):
 
elif Input.is_action_pressed("ui_left"):
 
velocity.x -= speed
 
velocity.x -= speed
$AnimatedSprite.flip_h = true
+
$AnimatedSprite2D.flip_h = true
 
# Move o personagem
 
# Move o personagem
 
if velocity.length() > 0:
 
if velocity.length() > 0:
set_linear_velocity(velocity)
+
set_linear_velocity(velocity * delta)
$AnimatedSprite.play()
+
$AnimatedSprite2D.play()
 
else:
 
else:
$AnimatedSprite.stop()
+
$AnimatedSprite2D.stop()
 
# Mantém o personagem em pé
 
# Mantém o personagem em pé
 
rotation_degrees = 0
 
rotation_degrees = 0
Linha 68: Linha 68:
 
if abs(get_linear_velocity().y) < 2:
 
if abs(get_linear_velocity().y) < 2:
 
jumping = false
 
jumping = false
 +
 
</syntaxhighlight>
 
</syntaxhighlight>
  

Edição das 08h13min de 27 de abril de 2023

Afluentes : Jogos Digitais, Usabilidade, desenvolvimento web, mobile e jogos

Videoaula

Youtube

Assets

walking assets

Estrutura

  • Configurações do Projeto:
    • Exibição... Janela...
      • Largura da Viewport: 1024
      • Altura da Viewport: 600
  • Player (RigidBody2D)
    • AnimatedSprite2D
    • CollisionShape2D
    • SoundJump (AudioStreamPlayer2D)
  • Box e Ground (StaticBody2D)
    • Sprite2D
    • CollisionShape2D
  • World (Node2D)
    • Fundo (TextureRect)
    • Music (AudioStreamPlayer)
    • Linkar
      • Ground
      • Player
      • Box (algumas)

Player Script

extends RigidBody2D

var speed = 10000
var jumpSpeed = -20000
var jumping = true

func _ready():
	pass

func _process(delta):
	# Pega o movimento
	var velocity = Vector2()
	if Input.is_action_pressed("ui_up"):
		if not jumping:
			velocity.y = jumpSpeed
			$SoundJump.play()
	elif Input.is_action_pressed("ui_right"):
		velocity.x += speed
		$AnimatedSprite2D.flip_h = false
	elif Input.is_action_pressed("ui_left"):
		velocity.x -= speed
		$AnimatedSprite2D.flip_h = true
	# Move o personagem
	if velocity.length() > 0:
		set_linear_velocity(velocity * delta)
		$AnimatedSprite2D.play()
	else:
		$AnimatedSprite2D.stop()
	# Mantém o personagem em pé
	rotation_degrees = 0
	# pula apenas se ele estiver no chão
	if abs(get_linear_velocity().y) < 2:
		jumping = false

Atividades

Desafio 1

Implemente o exemplo acima e faça-o funcionar. Experimente fazer modificações para ficar mais divertido.

Desafio 2

Exemplo de Assets

Baseado na última aula, crie um jogo com as seguintes características:

  • 1 elemento caixa. Você usará as caixas para criar um labirinto e as bordas do jogo;
  • 1 elemento player pra você controlar. Ele não usa gravidade, e pode ir para cima, baixo, esquerda e direita, conforme setas do teclado;
  • 1 elemento monstro que se controla sozinho. Anda para lados aleatórios a uma velocidade aleatória a cada certo período de tempo ou timeout de 1 segundo muda aleatoriamente;
  • Faça teste de colisão entre o player e o monstro. Caso o monstro toque no player, ele não se movimenta mais, está morto.

Algumas coisas foram vistas em aula, outras você terá que pesquisar para conseguir fazer o exercício.