Obrigado, vou pensar em gravar um vídeo sobre Low Poly em breve! É um estilo que gosto demais, principalmente voltando para a época do PS1 e Sega Saturn.
Então, achei super interessante o tutorial, só achei que a acabou muito escuro. Mas isso é uma opinião minha. Continue com os tutos no tema, está bem legal. #godotspace
eu estava vendo o video é programando a movimentaçao, eu terminei de programar ela so que fui testar é nao funcionou, detalhe nao estou usando um cubo pra fazer a nave alguem ai poderia me ajudar ?
como sempre, video top, como estou aprendendo coloco comentarios para mim e coloquei controle de firerate, pode ser que ajude mais pessoas, e gostaria de mais videos do mesmo, poderia se achar necessario até criar uma serie, tipo pegar power ups, mudar o tiro, inimigos, escudos, um rive raider 3d, 🙂 extends CharacterBody3D # Referência da nave const PROJECTILE = preload("res://ship/projectile.tscn") # Ponto de Referência de onde sair a bala Marker3D @onready var turrent: Marker3D = $turrent # Define a velocidade de movimento do personagem const MOVE_SPEED := 10.0 # Define a aceleração do personagem const ACCELERATION := 2.0 # Define o limite da tela para o movimento do personagem var screen_limit := 2.0 # Define o fator de rotação do personagem var rotation_factor := 10.0 # Define o peso da rotação do personagem var weight_rotation := 3.0 # Variável para controlar o tempo desde o último tiro var last_shot_time := 0.0 # Define o tempo de recarga entre os tiros (firerate) const FIRE_RATE := 0.5 # 0.5 segundos entre cada tiro # Função chamada a cada frame para processar a física do personagem func _physics_process(delta: float) -> void: # Variável para armazenar a direção do input do jogador var input_dir := Vector3.ZERO # Obtém os inputs do jogador para o eixo X (esquerda e direita) input_dir.x = Input.get_axis("ui_left", "ui_right") # Obtém os inputs do jogador para o eixo Y (baixo e cima) input_dir.y = Input.get_axis("ui_down", "ui_up") # Normaliza a direção do input para evitar movimentos mais rápidos em diagonais input_dir = input_dir.normalized()
# Verifica se o jogador pressionou o botão de tiro e se o tempo de recarga foi atingido if Input.is_action_just_pressed("ui_accept") and Time.get_unix_time_from_system() - last_shot_time >= FIRE_RATE: shoot() # Atualiza o tempo do último tiro last_shot_time = Time.get_unix_time_from_system() # Interpola a velocidade atual com a velocidade desejada com base na aceleração velocity.x = lerp(velocity.x, input_dir.x * MOVE_SPEED, ACCELERATION * delta) velocity.y = lerp(velocity.y, input_dir.y * MOVE_SPEED, ACCELERATION * delta) # Limita a posição do personagem dentro dos limites da tela transform.origin.x = clamp(transform.origin.x, -screen_limit, screen_limit) transform.origin.y = clamp(transform.origin.y, -screen_limit, screen_limit) # Interpola a rotação do personagem com base na velocidade e nos fatores de rotação rotation_degrees.x = lerp(rotation_degrees.x, velocity.y / rotation_factor, weight_rotation * delta) rotation_degrees.y = lerp(rotation_degrees.y, -velocity.x / rotation_factor, weight_rotation * delta) rotation_degrees.z = lerp(rotation_degrees.z, velocity.x * -rotation_factor, weight_rotation * delta) # Move o personagem de acordo com a velocidade calculada move_and_slide() # Função para disparar o projétil func shoot(): var projectile = PROJECTILE.instantiate() add_sibling(projectile) # Define a posição onde o tiro vai sair projectile.position = turrent.global_position
bem legal, é um starfox em 15 minutos! gostei do formato de tuto rápido, que venha a continuação!
Lembrei do Starfox tmb. O 64 principalmente
Que bacana. Obrigado, tenho aprendido muito
Show.
Salve mano ficou top demais 😊 pode criar mais vídeos desse 😊
Aguardo a aula seguinte! #godotspace
Caramba q legal!!! #godotspace
top! #godotspace
Bom vídeo e essa movimentação tá bem legal cara, vc poderia falar sobre gráficos Low polly #godotspace
Obrigado, vou pensar em gravar um vídeo sobre Low Poly em breve! É um estilo que gosto demais, principalmente voltando para a época do PS1 e Sega Saturn.
@@clecioespindolagamedev Legal cara também gosto dos de PS1 tem um certo diferencial esses games
Então, achei super interessante o tutorial, só achei que a acabou muito escuro.
Mas isso é uma opinião minha.
Continue com os tutos no tema, está bem legal.
#godotspace
#godotspace
eu estava vendo o video é programando a movimentaçao, eu terminei de programar ela so que fui testar é nao funcionou, detalhe nao estou usando um cubo pra fazer a nave alguem ai poderia me ajudar ?
como sempre, video top, como estou aprendendo coloco comentarios para mim e coloquei controle de firerate, pode ser que ajude mais pessoas, e gostaria de mais videos do mesmo, poderia se achar necessario até criar uma serie, tipo pegar power ups, mudar o tiro, inimigos, escudos, um rive raider 3d, 🙂
extends CharacterBody3D
# Referência da nave
const PROJECTILE = preload("res://ship/projectile.tscn")
# Ponto de Referência de onde sair a bala Marker3D
@onready var turrent: Marker3D = $turrent
# Define a velocidade de movimento do personagem
const MOVE_SPEED := 10.0
# Define a aceleração do personagem
const ACCELERATION := 2.0
# Define o limite da tela para o movimento do personagem
var screen_limit := 2.0
# Define o fator de rotação do personagem
var rotation_factor := 10.0
# Define o peso da rotação do personagem
var weight_rotation := 3.0
# Variável para controlar o tempo desde o último tiro
var last_shot_time := 0.0
# Define o tempo de recarga entre os tiros (firerate)
const FIRE_RATE := 0.5 # 0.5 segundos entre cada tiro
# Função chamada a cada frame para processar a física do personagem
func _physics_process(delta: float) -> void:
# Variável para armazenar a direção do input do jogador
var input_dir := Vector3.ZERO
# Obtém os inputs do jogador para o eixo X (esquerda e direita)
input_dir.x = Input.get_axis("ui_left", "ui_right")
# Obtém os inputs do jogador para o eixo Y (baixo e cima)
input_dir.y = Input.get_axis("ui_down", "ui_up")
# Normaliza a direção do input para evitar movimentos mais rápidos em diagonais
input_dir = input_dir.normalized()
# Verifica se o jogador pressionou o botão de tiro e se o tempo de recarga foi atingido
if Input.is_action_just_pressed("ui_accept") and Time.get_unix_time_from_system() - last_shot_time >= FIRE_RATE:
shoot()
# Atualiza o tempo do último tiro
last_shot_time = Time.get_unix_time_from_system()
# Interpola a velocidade atual com a velocidade desejada com base na aceleração
velocity.x = lerp(velocity.x, input_dir.x * MOVE_SPEED, ACCELERATION * delta)
velocity.y = lerp(velocity.y, input_dir.y * MOVE_SPEED, ACCELERATION * delta)
# Limita a posição do personagem dentro dos limites da tela
transform.origin.x = clamp(transform.origin.x, -screen_limit, screen_limit)
transform.origin.y = clamp(transform.origin.y, -screen_limit, screen_limit)
# Interpola a rotação do personagem com base na velocidade e nos fatores de rotação
rotation_degrees.x = lerp(rotation_degrees.x, velocity.y / rotation_factor, weight_rotation * delta)
rotation_degrees.y = lerp(rotation_degrees.y, -velocity.x / rotation_factor, weight_rotation * delta)
rotation_degrees.z = lerp(rotation_degrees.z, velocity.x * -rotation_factor, weight_rotation * delta)
# Move o personagem de acordo com a velocidade calculada
move_and_slide()
# Função para disparar o projétil
func shoot():
var projectile = PROJECTILE.instantiate()
add_sibling(projectile)
# Define a posição onde o tiro vai sair
projectile.position = turrent.global_position
#godotspace
#godotspace