@@DRY-AN-YOYO para mi no es tedioso, yo siempre me llevo con algo que me bloquea, algo que de repente se explica mal o si es la documentacion resulta que le falta expresarse en español y no solo traducirse, de todo tipos de cosas que siempre frenan de repente mi avanze y me hacen sentir con low IQ, pero me ha pasado hace tanto tiempo, hablo de unos 8 años o mas, que me hace sentir medio down, igual resulta que si tengo problemitas de concentración minimo
No te rindas viejo, Godot es super genial y es un buen motor para crear videojuegos, yo solamente he podido hacer un plataformero cutre, pero es un plataformero xD
Buen video 👌🏻, si añades algún carro de la vida real, te recomendaría que tú mismo hicieras los nombres o parecidos a el nombre real 😅, para que no te denuncien las empresas 😅😊, nuevo sub
Hola bro, me ha encantado, pero te daría algunas recomendaciones para mejorarlo: - Mejores autos: El auto está muy bueno, pero no podría decir lo mismo un jugador, que solo ve la parte trasera y un poco del costado, por eso, al menos para la versión final, podrías mejorar tu auto para hacerlo más extravagante y menos genérico. Una manera de hacerlo sería utilizando personajes, pero si no eres dueño de algunas figuras conocidas y no quieres que tu juego se vuelva un fangame, no es una buena opción. - Mecánica interesante: Es cierto que para hacer un juego de carreras bueno no es necesario poderes o mecánicas raras, pero también deberías buscar algo sutil pero interesante que vuelva a tu juego preferible en algunos aspectos antes que otro que podría parecer igual. Por eso sugiero ajustar las físicas para hacerlas desproporcionales, y darle un toque divertido y único a tu juego, sin necesidad de que deje de ser un juego de carreras. - Pistas creativas: Entiendo que recién comienzas el juego y no deberías preocuparte por las pistas, pero para un futuro, te recomiendo que hagas pistas memorables, tanto en un sentido cómico, como fantástico, y en general, imaginativo y creativo, de esa manera, un jugador puede crear con facilidad una opinión sobre el juego (que pistas son sus favoritas, etc) y que sea más recordable, y quizás, lo recomiende a otras personas. Además del obvio hecho de que haría el juego más divertido al tener secciones desafiantes o disfrutables. Espero que ayude!
@@inigodot Si vas a tirar de personajes o inspiraciones, tira de los de Tux Kart, que son de licencia libre, de hecho el juego es software libre, aunque no está hecho en Godot.
@@-L1ch- en caso de hacer con personajes creo que los intentaría hacer yo mismo, porque en parte quería hacer este juego para mejorar mis habilidades en modelado 3D, pero gracias por el consejo 😃
probablemente dos cosas que me gustaria ver en juegos de carreras arcade es la capacidad de hacer piruetas para ganar mas puntos/dinero. Otra cosa que no he visto en casi ningun juego es algo parecido a el mercado negro del juego death rally, en el podias añadir turbo, armas o sabotear a un rival. Estoy intentando hacer un pequeño clon de este juego para aprender a programar y me hace ilusion a ver que tal me sale :D
@@inigodot puede servir como una capa mas a los items que sueles conseguir en la carrera, como comprar temporalmente poder tener 2 items atajos que solo puedas conseguir con el turbo o los pinchos de delante y cosas asi Lo unico que me falto en el juego original es que cuanto mas lo uses mas posibilidades tienes de ser saboteado Pero bueno, al final es que quedes a gusto con el juego, pero la idea te la dejo ;D
me acabo de acordar de un juego de carreras bugeadisimo que no habia limite de velocidad hacia atras haci que si retrosedias salia algo como hacer el blj de mario 64 haci que hay que cuidar cosas como esas
Si, creo que eso pasaba en varios juegos de la N64 porque en lugar de darle una velocidad fija hacia atrás, se le restaba tal cantidad de velocidad al hacer algo. Por eso también está el SS de Wind Waker y demás. En mi coche ocurre lo mismo hacia delante y hacia atrás, así que no me preocupo por eso, pero gracias por el aviso :)
Gracias! No sé porque a veces no funciona el enlace al Discord, te lo dejo aquí por si quieres unirte: discord.gg/9uqaqB3r . Por ahora no tengo otras redes
No la he publicado, pero si quieres te puedo pasar el código: extends Node3D @onready var ball = $RigidBody3D @onready var car_mesh = $car_mesh @onready var raycast = $car_mesh/RayCast3D @onready var cam_pivot = $car_mesh/cam_pivot @onready var cam = $car_mesh/cam_pivot/Camera3D @onready var body_mesh = $car_mesh/Car @onready var left_wheel = $car_mesh/left_wheel @onready var right_wheel = $car_mesh/right_wheel @onready var left_back_wheel = $car_mesh/leftBack_wheel @onready var right_back_wheel = $car_mesh/rightBack_wheel @onready var particles = $car_mesh/GPUParticles3D @export var sphere_offset = Vector3(0, -0.5, 0) @export var acceleration = 500 @export var steering = 25 @export var turn_speed = 3 @export var turn_stop_limit = 5 @export var body_tilt = 400 var direction_needed = true var is_drifting = false var drift_dir = 0 var time_drifting = 0 var miniturbo = 0 var applying_force = false var LookAt #Car Stats @export var miniturbo_get_speed = 1 func _ready(): raycast.add_exception(ball) LookAt = global_position func _physics_process(delta): #Getting Inputs var direction_fw = Input.get_axis("accel", "deccel") var direction_side =Input.get_axis("right", "left") #If the car is on the floor (the raycast is colliding) we can accelerate/brake #Making the Inputs greater with variables direction_fw *= acceleration direction_side *= deg_to_rad(steering) #The car mesh is placed correctly #We apply the force car_mesh.global_position = car_mesh.global_position.lerp(ball.global_position + sphere_offset, delta * 10) if applying_force: ball.apply_central_force(-car_mesh.global_basis.z * -acceleration * 2) elif ball.linear_velocity.length() < 120: ball.apply_central_force(-car_mesh.global_basis.z * direction_fw)
#$"../CanvasLayer/Label".text = "FPS: " + str(Engine.get_frames_per_second()) func _on_timer_timeout(): applying_force = false miniturbo = 0 print("ya") func acelera(cantidad): ball.apply_central_force(-car_mesh.global_basis.z * -acceleration * cantidad) En esta versión el código está muy desorganizado, ahora mismo tengo una versión con el proyecto más avanzado con mejor código :)
Que lindo es godot, ojala no me rinda
Ánimo :D
Yo me rindo cada 3 dias xd y lo retomo, es q lo de aprender a programar es tedioso y mas por mi cuenta
@@DRY-AN-YOYO para mi no es tedioso, yo siempre me llevo con algo que me bloquea, algo que de repente se explica mal o si es la documentacion resulta que le falta expresarse en español y no solo traducirse, de todo tipos de cosas que siempre frenan de repente mi avanze y me hacen sentir con low IQ, pero me ha pasado hace tanto tiempo, hablo de unos 8 años o mas, que me hace sentir medio down, igual resulta que si tengo problemitas de concentración minimo
No te rindas viejo, Godot es super genial y es un buen motor para crear videojuegos, yo solamente he podido hacer un plataformero cutre, pero es un plataformero xD
Ya quiero ver la parte 2!
que bueno que publicaras el tutorial desde 0, es lo que he estado buscando
Buen video 👌🏻, si añades algún carro de la vida real, te recomendaría que tú mismo hicieras los nombres o parecidos a el nombre real 😅, para que no te denuncien las empresas 😅😊, nuevo sub
Pensaba hacer coches que no existan en la realidad, pero si añado alguno así, lo tomaré en cuenta :)
aca huelo a exito
@@Satoruu23 Muchas gracias :D
Team godot 💪🔥
Que epico que muestres todo el proceso y de donde sacas las referencias, simplemente un capo
Gracias 😊
te quedo chido!
@@PuertoUSB Gracias :)
Se ve bien, mucha suerte.
Gracias :D
6:32 Se que es obvio pero le quedaría genial unas particulas de viento cuando la velocidad del coche sea muy rapida y una skibox.
Gracias por los consejos! Lo añadiré :)
Increible video, muy bien explicado.
@@dr_ajolote3361Muchas gracias:)
Colores al derrapar bro 😊
Si! Lo intente añadir pero no sé del todo como funcionan las partículas jaja
Buen video!!!!
@@albertomoreira6588 Gracias!
Hola bro, me ha encantado, pero te daría algunas recomendaciones para mejorarlo:
- Mejores autos: El auto está muy bueno, pero no podría decir lo mismo un jugador, que solo ve la parte trasera y un poco del costado, por eso, al menos para la versión final, podrías mejorar tu auto para hacerlo más extravagante y menos genérico. Una manera de hacerlo sería utilizando personajes, pero si no eres dueño de algunas figuras conocidas y no quieres que tu juego se vuelva un fangame, no es una buena opción.
- Mecánica interesante: Es cierto que para hacer un juego de carreras bueno no es necesario poderes o mecánicas raras, pero también deberías buscar algo sutil pero interesante que vuelva a tu juego preferible en algunos aspectos antes que otro que podría parecer igual. Por eso sugiero ajustar las físicas para hacerlas desproporcionales, y darle un toque divertido y único a tu juego, sin necesidad de que deje de ser un juego de carreras.
- Pistas creativas: Entiendo que recién comienzas el juego y no deberías preocuparte por las pistas, pero para un futuro, te recomiendo que hagas pistas memorables, tanto en un sentido cómico, como fantástico, y en general, imaginativo y creativo, de esa manera, un jugador puede crear con facilidad una opinión sobre el juego (que pistas son sus favoritas, etc) y que sea más recordable, y quizás, lo recomiende a otras personas. Además del obvio hecho de que haría el juego más divertido al tener secciones desafiantes o disfrutables.
Espero que ayude!
Muchísimas gracias por tus consejos :) trataré de añadir esas cosas para el siguiente video
@@inigodot Si vas a tirar de personajes o inspiraciones, tira de los de Tux Kart, que son de licencia libre, de hecho el juego es software libre, aunque no está hecho en Godot.
@@-L1ch- en caso de hacer con personajes creo que los intentaría hacer yo mismo, porque en parte quería hacer este juego para mejorar mis habilidades en modelado 3D, pero gracias por el consejo 😃
Me parece increíble que hayas llegado 1,52k en 4 meses. Sigue así porque tus videos son muy buenos y muy entretenidos ❤
Muchas gracias! No me creo haber llegado tan rápido a tanto :)
¡¡ Que increible video !!
Ya se como hacer coches. 😎
Excelente video! Todavía no tengo tiempo para poder ponerme hacer un juego , pero aún así me parece muy interesante el vídeo!
😀👍 sigue así mi pana lo ases genial
Muy buen video
Gracias :D
pero que god
1:20 xd
Unas estelas de velocidad en el aleron para que se sienta la velocidad
Buena idea! Se lo pondré :)
Ostia tio iñi godot subio video tio 😮
probablemente dos cosas que me gustaria ver en juegos de carreras arcade es la capacidad de hacer piruetas para ganar mas puntos/dinero.
Otra cosa que no he visto en casi ningun juego es algo parecido a el mercado negro del juego death rally, en el podias añadir turbo, armas o sabotear a un rival. Estoy intentando hacer un pequeño clon de este juego para aprender a programar y me hace ilusion a ver que tal me sale :D
@@rubenpereira2556 Me gustan tus ideas, aunque pensaba hacerlo más al estilo de Mario kart, pero igual lo añado igualmente :)
@@inigodot puede servir como una capa mas a los items que sueles conseguir en la carrera, como comprar temporalmente poder tener 2 items
atajos que solo puedas conseguir con el turbo o los pinchos de delante y cosas asi
Lo unico que me falto en el juego original es
que cuanto mas lo uses mas posibilidades tienes de ser saboteado
Pero bueno, al final es que quedes a gusto con el juego, pero la idea te la dejo ;D
Re god video
Creo que hay que ponerle un clamp a la rotasion de las ruedas por que se giran mucho
Si, vendría bien, gracias por el consejo 😃
Añade un modo en el que puedas montarte encima de otro auto para tener hijos autos que después te sigan en la pista de carreras 🏎️
😨 XD
me acabo de acordar de un juego de carreras bugeadisimo que no habia limite de velocidad hacia atras haci que si retrosedias salia algo como hacer el blj de mario 64 haci que hay que cuidar cosas como esas
Si, creo que eso pasaba en varios juegos de la N64 porque en lugar de darle una velocidad fija hacia atrás, se le restaba tal cantidad de velocidad al hacer algo. Por eso también está el SS de Wind Waker y demás. En mi coche ocurre lo mismo hacia delante y hacia atrás, así que no me preocupo por eso, pero gracias por el aviso :)
Creo que con un mapa algo mas detallado, particulas y Skybox quedaría muy pero que muy bonito
@@FabricioLusardo Ese es el plan! En los siguientes videos he estado empezando un circuito más complejo
Hola! me encanto tu video! el enlace a discord no funciona, tenes redes?
Gracias! No sé porque a veces no funciona el enlace al Discord, te lo dejo aquí por si quieres unirte: discord.gg/9uqaqB3r . Por ahora no tengo otras redes
yo sigo aun con juegos 2d y no creo salir de ellos en un tiempo
Yo también llevaba bastante tiempo en 2d, pero quería probar un poco el 3d :)
Creo que es obvio pero deberías agregarle partículas al derrapar y efectos de camara como alejarse un poco cuando aceleras
Si ya me lo ha dicho bastante gente jaja, lo voy a añadir :)
SOY EL LIKE 400!!
no tiene que ver pero podrìan decir el nombre de la cancion del minuto 2:43
Es el tema principal de Wii Party, busca Wii Party Ost y te saldrá 😊
@@inigodot Gracias bro, por cierto me encantas tus videos!, aunque no use godot me inspiran
Agrega tnt que te destrose el auto y que te deje fuera de juego porfa con muchas perticulas
Podría ponerlo como objeto 🤔 Gracias por la recomendación, lo tendre en cuenta :D
Particulas pa q c vea mas inmersivo
Si, le voy a poner pero no sé del todo como hacerlas jaja
Donde puedo analizar el código con mas detalle?
No la he publicado, pero si quieres te puedo pasar el código:
extends Node3D
@onready var ball = $RigidBody3D
@onready var car_mesh = $car_mesh
@onready var raycast = $car_mesh/RayCast3D
@onready var cam_pivot = $car_mesh/cam_pivot
@onready var cam = $car_mesh/cam_pivot/Camera3D
@onready var body_mesh = $car_mesh/Car
@onready var left_wheel = $car_mesh/left_wheel
@onready var right_wheel = $car_mesh/right_wheel
@onready var left_back_wheel = $car_mesh/leftBack_wheel
@onready var right_back_wheel = $car_mesh/rightBack_wheel
@onready var particles = $car_mesh/GPUParticles3D
@export var sphere_offset = Vector3(0, -0.5, 0)
@export var acceleration = 500
@export var steering = 25
@export var turn_speed = 3
@export var turn_stop_limit = 5
@export var body_tilt = 400
var direction_needed = true
var is_drifting = false
var drift_dir = 0
var time_drifting = 0
var miniturbo = 0
var applying_force = false
var LookAt
#Car Stats
@export var miniturbo_get_speed = 1
func _ready():
raycast.add_exception(ball)
LookAt = global_position
func _physics_process(delta):
#Getting Inputs
var direction_fw = Input.get_axis("accel", "deccel")
var direction_side =Input.get_axis("right", "left")
#If the car is on the floor (the raycast is colliding) we can accelerate/brake
#Making the Inputs greater with variables
direction_fw *= acceleration
direction_side *= deg_to_rad(steering)
#The car mesh is placed correctly
#We apply the force
car_mesh.global_position = car_mesh.global_position.lerp(ball.global_position + sphere_offset, delta * 10)
if applying_force:
ball.apply_central_force(-car_mesh.global_basis.z * -acceleration * 2)
elif ball.linear_velocity.length() < 120:
ball.apply_central_force(-car_mesh.global_basis.z * direction_fw)
left_wheel.rotation.x += ball.linear_velocity.length() * 0.005
right_wheel.rotation.x += ball.linear_velocity.length() * 0.005
left_back_wheel.rotation.x += ball.linear_velocity.length() * 0.005
right_back_wheel.rotation.x += ball.linear_velocity.length() * 0.005
#Rotating the car
if is_drifting:
if ball.linear_velocity.length() > turn_stop_limit:
var new_basis = car_mesh.global_transform.basis.rotated(car_mesh.global_transform.basis.y, drift_dir)
car_mesh.global_transform.basis = car_mesh.global_transform.basis.slerp(new_basis, turn_speed * delta)
car_mesh.global_transform = car_mesh.global_transform.orthonormalized()
else:
if ball.linear_velocity.length() > turn_stop_limit:
var new_basis = car_mesh.global_transform.basis.rotated(car_mesh.global_transform.basis.y, direction_side)
car_mesh.global_transform.basis = car_mesh.global_transform.basis.slerp(new_basis, turn_speed * delta)
car_mesh.global_transform = car_mesh.global_transform.orthonormalized()
#Drifting the wheels
left_wheel.rotation.y = lerp(left_wheel.rotation.y, direction_side + drift_dir, delta * 15)
right_wheel.rotation.y = lerp(right_wheel.rotation.y, direction_side + drift_dir, delta * 15)
#Tilting the car slightly for a cool visual effect
var tilt = -direction_side * ball.linear_velocity.length() / body_tilt
body_mesh.rotation.z = lerp(body_mesh.rotation.z, tilt, delta * 10)
#Drifting
if Input.is_action_pressed("drift"):
steering = 50
is_drifting = true
if direction_needed:
if Input.get_axis("right","left") > 0:
drift_dir = 1
if Input.get_axis("right","left") < 0:
drift_dir = -1
if Input.get_axis("right","left") == 0:
drift_dir = 0
direction_needed = false
if drift_dir == 0:
direction_needed = true
if drift_dir * direction_side > 0:
turn_speed = 2
elif drift_dir * direction_side < 0:
turn_speed = 0
elif drift_dir * direction_side == 0:
turn_speed = 1
else:
is_drifting = false
steering = 25
turn_speed = 3
if Input.is_action_just_released("drift"):
direction_needed = true
time_drifting = 0
drift_dir = 0
applying_force = true
if miniturbo != 0:
$RigidBody3D/Timer.wait_time = miniturbo
$RigidBody3D/Timer.start()
miniturbo = 0
else:
applying_force = false
if raycast.is_colliding():
ball.gravity_scale = 6
else:
ball.gravity_scale = 10
if is_drifting and ball.linear_velocity.length() > 5 and drift_dir != 0:
time_drifting += delta
if time_drifting > 1 / miniturbo_get_speed:
print("azul")
particles.emitting = true
miniturbo = 0.4
if time_drifting > 2.3 / miniturbo_get_speed:
print("rojo")
miniturbo = 0.7
if time_drifting > 6 / miniturbo_get_speed:
print("morado")
miniturbo = 1
if drift_dir > 0:
particles.rotation.y = 0
if drift_dir < 0:
particles.rotation.y = 180
#cam.fov = 75 + ball.linear_velocity.length() / 5
#Camera control
LookAt = LookAt.lerp(car_mesh.global_position + (ball.linear_velocity / 5), delta * 5)
cam_pivot.global_position = cam_pivot.global_position.lerp(car_mesh.global_position, delta * 15)
cam_pivot.transform = cam_pivot.transform.interpolate_with(car_mesh.global_transform, delta * 4)
cam.look_at(LookAt)
cam.rotation_degrees.x = cam.rotation_degrees.x + 20
#$"../CanvasLayer/Label".text = "FPS: " + str(Engine.get_frames_per_second())
func _on_timer_timeout():
applying_force = false
miniturbo = 0
print("ya")
func acelera(cantidad):
ball.apply_central_force(-car_mesh.global_basis.z * -acceleration * cantidad)
En esta versión el código está muy desorganizado, ahora mismo tengo una versión con el proyecto más avanzado con mejor código :)
@@inigodot gracias
@iñigodot
Un motor de videojuegos 3D joyisima es flax engine solo que no hay tutoriales en español ;(
@@cesar2craft713 Estaba pensando en igual hacer un vídeo sobre motores de videojuegos, así que le echaré un ojo 👀
@@inigodot sería increíble saber a cómo usar alternativos a unity
No estás en la última versión de Godot?
@@Edit451 cuál es la última versión? Yo estoy en la 4.2.1 :)
Me gustaría entender mejor la iluminación. Hay me perdi
Yo tampoco entiendo del todo jaja, simplemente hice un WorldEnvironment y fui jugando con las propiedades
porque no me deja entrar a tu discord??, me puedes mandar la invitasion porfa
Que raro, aquí está el enlace: discord.gg/9uqaqB3r
@@inigodot gracias