0% encontró este documento útil (0 votos)
45 vistas6 páginas

Programacion Godot

El documento describe los pasos para configurar el control y movimiento de un personaje en un juego 2D utilizando Godot. Estos incluyen agregar un sprite al nivel, configurar la gravedad y movimiento, mapear las teclas de control, definir estados de movimiento como izquierda/derecha/ninguno, y actualizar la velocidad del personaje según el estado y tecla presionada.

Cargado por

TALIA MARTINEZ
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
45 vistas6 páginas

Programacion Godot

El documento describe los pasos para configurar el control y movimiento de un personaje en un juego 2D utilizando Godot. Estos incluyen agregar un sprite al nivel, configurar la gravedad y movimiento, mapear las teclas de control, definir estados de movimiento como izquierda/derecha/ninguno, y actualizar la velocidad del personaje según el estado y tecla presionada.

Cargado por

TALIA MARTINEZ
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

PREPARANDO AL JUGADOR.

Elementos base del player.

1.- Seleccionamos el nivel1 y agregamos como hijo un KinematicBody2D, de modo que


nosotros podamos personalizarlo a las necesidades del juego.

2.- Lo nombramos player y lo agregamos al grupo Player.

3.- Dentro el player creamos un hijo que será un sprite que recibirá la imagen del personaje.
Cargamos el sprite con los frames del personaje.

4.- Veamos que ahora tendremos que dividir las imágenes en frames, pero en esta ocasión
nuestro personaje está en horizontal y no en vertical como los ladrillos que pusimos al
mapear. Por lo cual colocamos en Hframes un 7, ya que son los 7 sprites que tenemos.
POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

5.- Colocaremos el kinnematic un nuevo hijo, por lo cual será un collisionShape2D, lo


ponemos en un shape rectangular y cubrimos a nuestro personaje, esto para que pueda
cubrir a nuestro personaje y lo haga colisionar con los objetos físicos de nuestro escenario.

6.- Movemos un poco el personaje hacia -y, para que aparezca dentro de la escena al
ejecutar.
POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

Sistema de gravedad.

7.- Creamos nuestro primer script, seleccionamos kinematic y ahí se lo agregamos dando
click derecho, le agregamos el siguiente código.

extends KinematicBody2D

var vel_act = Vector2() // Utilizamos una variable que reciba el valor de Vector2 (X,Y)
var gravedad = 4000 // El valor inicial de la gravedad

func _ready():
pass # Replace with function body.

func _physics_process(delta): // creamos una función, recordemos que la función nos ayuda con operaciones específicas.

vel_act.y = gravedad * delta // la velocidad actual se mueve en y, para obtenerla se hace la operación gravedad por tiempo

move_and_collide(vel_act * delta) // la biblioteca move nos ayudará a generar una correcta colisión entregando la velocidad por el tiempo.

Nota: Varía el valor de gravedad, para que el objeto pueda caer lento o rápido el objeto.

Procesamiento del teclado.

8.- Vamos a configurar las teclas del juego, por lo cual iremos al menú proyecto,
configuración del proyecto, mapa de entrada.
POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

9.- Colocamos izquierda, derecha, boton_a, boton_b, arriba, abajo.

10.- Frente a cada acción colocaremos la tecla que queremos que tome efecto en el juego.
(Elección del equipo).

11.- Utilizamos este código:

if(Input.is_action_just_pressed("derecha")):
pass
elif(Input.is_action_just_released("derecha")):
pass
elif(Input.is_action_just_pressed("izquierda")):
pass
elif(Input.is_action_just_released("izquierda")):
pass

Estados de movimiento.

12.- Creamos una variable que tenga todos los estados y otra que coloque en su estado
neutro al personaje.

enum estados {ningungo, derecha, izquierda, arriba, abajo}

var estado_actual = estados.ninguno

13.- Nuestras teclas deberán de cambiar de acuerdo a la instrucción dada, izquierda o


derecha y al no presionar la tecla asignada, no deberán de realizar ninguna acción.

if(Input.is_action_just_pressed("derecha")):
estado_actual = estados.derecha
elif(Input.is_action_just_released("derecha")):
estado_actual = estados.ninguno
elif(Input.is_action_just_pressed("izquierda")):
estado_actual = estados.izquierda
elif(Input.is_action_just_released("izquierda")):
estado_actual = estados.ninguno

14.- Creamos una nueva función que tendrá que procesar todas las teclas.

Copiamos el código de procesamiento de teclas a esta nueva función.

func procesar_teclas():

if(Input.is_action_just_pressed("derecha")):
estado_actual = estados.derecha
elif(Input.is_action_just_released("derecha")):
POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

estado_actual = estados.ninguno
elif(Input.is_action_just_pressed("izquierda")):
estado_actual = estados.izquierda
elif(Input.is_action_just_released("izquierda")):
estado_actual = estados.ninguno

15.- Aún no llamamos a nuestra función “procesar_teclas”, por lo cual lo haremos en la


función _physics, de una vez creamos una nueva función que se llamará
“procesar_movimiento”.

procesar_teclas()
procesar_movimiento()

16.- Creamos una nueva variable que configure la velocidad de movimiento.

export (float) var vel_mov

17.- Creamos la función “procesar movimiento”.

func procesar_movimiento():
if(estado_actual == estados.derecha):
vel_act.x = vel_mov
elif(estado_actual == estados.izquierda):
vel_act.x = -vel_mov

18.- Vemos que al ejecutar nuestro personaje no para, para evitar esto colocaremos una
variable que al terminar de ir de izquierda a derecha, y al entrar al estado ninguno, pase a
ser un 0.

vel_act.x = 0

19.- Nuestro código hasta el momento quedará de la siguiente manera:

extends KinematicBody2D

var vel_act = Vector2()


var gravedad = 8000
export (float) var vel_mov

enum estados {ninguno,derecha, izquierda, arriba, abajo}


var estado_actual = estados.ninguno

func _ready():
pass # Replace with function body.

func _physics_process(delta):
vel_act.y = gravedad * delta
POO. INGENIERIA EN ANIMACION Y EFECTOS VISUALES. MTRO. MARIO A.GEA P.

vel_act.x = 0

procesar_teclas()

procesar_movimiento()

move_and_collide(vel_act * delta)

func procesar_teclas():
if(Input.is_action_just_pressed("derecha")):
estado_actual=estados.derecha
elif(Input.is_action_just_released("derecha")):
estado_actual=estados.ninguno
elif(Input.is_action_just_pressed("izquierda")):
estado_actual=estados.izquierda
elif(Input.is_action_just_released("izquierda")):
estado_actual=estados.ninguno

func procesar_movimiento():
if(estado_actual == estados.derecha):
vel_act.x = vel_mov
elif(estado_actual == estados.izquierda):
vel_act.x = -vel_mov

También podría gustarte