Mudanças entre as edições de "Godot Engine: Hello Game World!"
De Aulas
Linha 38: | Linha 38: | ||
== Player Script == | == Player Script == | ||
− | <syntaxhighlight lang=python | + | <syntaxhighlight lang=python> |
− | extends | + | extends CharacterBody2D |
− | var speed = | + | var speed = 300.0 |
− | var | + | var jump_speed = -500.0 |
− | var | + | # Pega a gravidade das configuracoes do projeto |
+ | var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") | ||
− | func | + | func _physics_process(delta): |
− | + | # Add the gravity. | |
+ | velocity.y += gravity * delta | ||
− | + | # Handle Jump. | |
− | # | + | if Input.is_action_just_pressed("ui_up") and is_on_floor(): |
− | + | $SoundJump.play() | |
− | if Input. | + | velocity.y = jump_speed |
− | + | ||
− | + | # Get the input direction. | |
− | + | var direction = Input.get_axis("ui_left", "ui_right") | |
− | + | velocity.x = direction * speed | |
− | + | if direction > 0: | |
$AnimatedSprite2D.flip_h = false | $AnimatedSprite2D.flip_h = false | ||
− | + | $AnimatedSprite2D.play() | |
− | + | elif direction < 0: | |
$AnimatedSprite2D.flip_h = true | $AnimatedSprite2D.flip_h = true | ||
− | |||
− | |||
− | |||
$AnimatedSprite2D.play() | $AnimatedSprite2D.play() | ||
else: | else: | ||
$AnimatedSprite2D.stop() | $AnimatedSprite2D.stop() | ||
− | + | ||
− | + | move_and_slide() | |
− | |||
− | |||
− | |||
</syntaxhighlight> | </syntaxhighlight> |
Edição das 11h01min de 6 de maio de 2024
Afluentes : Jogos Digitais, Usabilidade, desenvolvimento web, mobile e jogos
Informações
Esse exemplo foi originalmente feito para o Godot 3, mas modifiquei para funcionar no Godot Engine versão 4.
Videoaula: Youtube (Essa videoaula foi gravada usando o Godot 3)
Assets
Estrutura
- Configurações do Projeto:
- Exibição... Janela...
- Largura da Viewport: 1024
- Altura da Viewport: 600
- Exibição... Janela...
- Player (CharacterBody2D)
- AnimatedSprite2D
- CollisionShape2D
- SoundJump (AudioStreamPlayer2D)
- Box e Ground (StaticBody2D)
- Sprite2D
- CollisionShape2D
- World (Node2D)
- Fundo (TextureRect)
- Music (AudioStreamPlayer)
- Linkar
- Ground
- Player
- Box (algumas)
Pra música ficar em loop, clicar no music.ogg e em cima, ao lado de Cena, clicar em importar. Selecionar Repetir e reimportar.
Player Script
extends CharacterBody2D
var speed = 300.0
var jump_speed = -500.0
# Pega a gravidade das configuracoes do projeto
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
func _physics_process(delta):
# Add the gravity.
velocity.y += gravity * delta
# Handle Jump.
if Input.is_action_just_pressed("ui_up") and is_on_floor():
$SoundJump.play()
velocity.y = jump_speed
# Get the input direction.
var direction = Input.get_axis("ui_left", "ui_right")
velocity.x = direction * speed
if direction > 0:
$AnimatedSprite2D.flip_h = false
$AnimatedSprite2D.play()
elif direction < 0:
$AnimatedSprite2D.flip_h = true
$AnimatedSprite2D.play()
else:
$AnimatedSprite2D.stop()
move_and_slide()
Atividades
Desafio 1
Implemente o exemplo acima e faça-o funcionar. Experimente fazer modificações para ficar mais divertido.
Desafio 2
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.