jueves, 30 de mayo de 2024

Script GDScript para rotar un node3d en eje "x" y en eje "y"; para Godot 4.2 en 3 dimensiones;

 extends Node3D



# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

rotate_x(0.0002)

rotate_y(0.001)

pass

Script para derribar un enemigo y cambiarlo por otro con GDScript, al ser colisionado;

 extends Area3D

var Esferauno = preload("res://INMUEBLES/VERDUGO UNO/VERDUGO SIN CAVEZA/NUEVO VERDUGO SIN CAVEZA10.tscn")


# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

pass


func _on_area_entered(area):


var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")


var Esferauno = Esferauno.instantiate()


add_child(Esferauno)


get_node("CollisionShape3D").queue_free()

$"BERDUGO CON ANIMACION Y CAPUCHA".queue_free()


pass # Replace with function body.

domingo, 26 de mayo de 2024

Una IA me comenta mis logros programando y desarrollando con Godot4.2; fascinante diria Spock de Star Trek!!!; Script GDScript para cambiar de escena;

extends Area3D

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

func _process(delta):
pass

func _on_area_entered(area):
var siguiente_escena = preload("res://LA-2.tscn")  # Precargar la escena

get_tree().change_scene_to_packed(siguiente_escena)  # Cambiar a la escena precargada (Godot 4.2)

queue_free()  # Liberar este nodo después del cambio de escena
pass # Replace with function body.

 😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁

¡Me alegra mucho saber que has encontrado una solución que funciona y que tu idea está en marcha! Parece que estás utilizando un enfoque elegante para activar el cambio de escena. La combinación de un proyectil de corto alcance, un script de autoeliminación basado en un temporizador y un activador de área crea una experiencia fluida e interactiva para el jugador.

Siempre me entusiasma ver cómo los desarrolladores utilizan enfoques creativos para implementar sus ideas de juego. El concepto de usar un proyectil para interactuar con un objeto e iniciar un cambio de escena abre una variedad de posibilidades para la resolución de rompecabezas, la exploración y la mecánica narrativa en tu juego.

Con la combinación correcta de scripts, diseño de niveles y elementos visuales, puedes crear experiencias atractivas e inmersivas que cautiven a tus jugadores. Sigue experimentando, refinando tus ideas y dejando fluir tu creatividad.

Si tienes más preguntas o necesitas ayuda en el camino, no dudes en contactarme. Estoy aquí para apoyarte en tu viaje de desarrollo de juegos.


😁😁😁😁😁😁😁😁😁😁😁😁😁😁

😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁😁


Siguiendo con mis pruebas, ni disparar nada necesito, ahora pasa por la puerta el player y hace el cambio de escena borrando la antigua, e de buscar el motivo.




nvestigando el cambio de escena al atravesar la puerta en Godot 4.2

Es interesante que hayas cambiado de usar un proyectil para disparar el cambio de escena a tener al jugador pasando directamente por la puerta. Esto abre una interacción más intuitiva y envolvente para el jugador. Exploremos algunas razones potenciales por las que el cambio de escena podría no funcionar de manera consistente cuando el jugador atraviesa la puerta:

1. Detección de área y colisión:

  • Activación de área: Verifica que el activador de área esté configurado correctamente para detectar el objeto del jugador. Asegúrate de que el nodo del jugador esté incluido en la lista de máscaras de colisión o grupos que el activador de área puede detectar.
  • Forma de colisión: Asegúrate de que la forma de colisión para la puerta o el activador de área represente con precisión el área donde el jugador debería activar el cambio de escena. Si la forma de colisión es demasiado pequeña o no se superpone completamente con la trayectoria del movimiento del jugador, es posible que la colisión no se detecte de manera consistente.
  • Posición y rotación: Comprueba la posición y rotación del activador de área o del objeto puerta. Si la trayectoria del movimiento del jugador no intersecta el activador en el ángulo o la posición correctos, es posible que la colisión no se registre.

2. Script de cambio de escena:

  • Conexión: Asegúrate de que el script que maneja el cambio de escena esté conectado correctamente al activador de área o al nodo del jugador. Esto podría implicar conectar una señal del evento de colisión al método o función del script que maneja la lógica del cambio de escena.
  • Lógica de script: Revisa el código en el script de cambio de escena para asegurarte de que está detectando correctamente la interacción del jugador e iniciando el cambio de escena. Comprueba si hay errores o problemas lógicos que podrían estar impidiendo que el cambio de escena se produzca de manera consistente.

3. Movimiento y física del jugador:

  • Controlador de personaje: Si estás utilizando un controlador de personaje para el movimiento del jugador, verifica que la configuración de colisión y el comportamiento del movimiento permitan que el jugador interactúe correctamente con el activador de área o el objeto puerta. Comprueba si hay posibles problemas con el movimiento del jugador al atravesar la puerta o al activar la colisión.
  • Configuración de física: Revisa la configuración de física para el jugador y el objeto puerta. Asegúrate de que la gravedad, la masa y otras propiedades físicas no impidan que el jugador interactúe con la puerta o active el cambio de escena de manera consistente.

4. Depuración y pruebas:

  • Visualizar la colisión: Utiliza las herramientas de depuración de Godot para visualizar las formas de colisión y las áreas en tu escena. Esto puede ayudarte a identificar posibles huecos o superposiciones que podrían estar afectando la detección de colisiones.
  • Depuración paso a paso: Recorre el código en el script de cambio de escena utilizando el depurador de Godot. Esto puede ayudarte a identificar la ubicación exacta donde la lógica del cambio de escena podría estar fallando.
  • Pruebas con diferentes jugadores: Prueba el cambio de escena con diferentes personajes de jugador o configuraciones de movimiento para ver si el problema es específico de una configuración particular.

Si has verificado todos estos puntos y aún no puedes identificar la causa, considera compartir más detalles sobre la configuración de tu proyecto, incluyendo capturas de pantalla de la escena, fragmentos de código y cualquier mensaje de error. Buscar ayuda de la comunidad Godot a través de foros o grupos en línea también podría proporcionar información valiosa.

Enlace a mis ultimos desarrollos;






https://perico415.itch.io/

viernes, 24 de mayo de 2024

JUEGO EN GODOT 4.2 BALLS BULLETS AND TITS;

 


RESOLUCION DE 1920 POR 1080
PARA WINDOWS.
EN CARPETA COMPRIMIDA 183.163 KB
EN CARPETA DESCOMPRIMIDA 339 MB

Z-X-SUBIR BAJAR ARMA W-A-S-D, MOVERSE, ESPACIO, TECLAS DE LAS FLECHAS, ESCAPE SALIR.DISPARAR BOTONES DEL RATÓN
                Z-X-RAISE DOWN WEAPON W-A-S-D, MOVE,SPACE, ARROW KEYS, ESC EXIT.SHOOT MOUSE BUTTONS



JUEGO ERÓTICO PARA MAYORES DE 18 AÑOS, PARA PASAR EL RATO , EXPLORACION Y ADITIVO, TIPO DISPAROS, FONDO MUSICAL Y CHICAS PICANTES, NO TE MUERDAS LAS UÑAS , MEJOR JUEGA A ESTE JUEGO, NO ROMPAS BURBUJAS DE PLASTICO, MEJOR JUEGA A ESTE JUEGO.....

EROTIC GAME FOR OVER 18 YEARS OLD, TO PASS THE TIME, EXPLORATION AND ADDITION, SHOOTING TYPE, MUSICAL BACKGROUND AND SPICY GIRLS, DON'T BITE YOUR NAILS, BETTER PLAY THIS GAME, DON'T BREAK PLASTIC BUBBLES, BETTER PLAY THIS GAME. ....

TITULO EN ESPAÑOL     BOLAS BALAS Y TETAS EN INGLES  BALLS BULLETS AND TITS

miércoles, 22 de mayo de 2024

Simple script GDScript, para elevar un StaticBody3D, lentamente y continuamente; para Godot 4.2;

extends StaticBody3D


func _ready():

pass # Replace with function body.


func _process(delta):

translate(Vector3(0, -9, 0) * get_process_delta_time())

pass


------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------

EXPLICACION: Simplemente se va elevando un StaticBody3D, la idea es que cuando sale a una superficie y hace una colision se provoca un cambio de escena, este script en concreto solamente eleva un StaticBody3D, fijarse en este detalle  .............

  func _process(delta):

translate(Vector3(0, -9, 0) * get_process_delta_time())

pass

 el proceso delta hace que funcione constantemente sin detenerse, -9 es el eje -y- y los 0 serian los ejes -x- y el otro 0 el -z-  translate significa translada movimiento mover etc......un detallito de los ejes -9 hace que suba 9 hace que baje
y esta linea    * get_process_delta_time())  hace que el movimiento sea fluido y constante en cualquier tipo de pc.

lunes, 20 de mayo de 2024

Como cambiar de nivel conGodot4.2 3D al pasar por un Area3D;

extends Area3D


func _ready():

pass # Replace with function body.


func _process(delta):

pass


func _on_area_entered(area):

var siguiente_escena = preload("res://ESCENAPRINCIPAL-2-.tscn")  # Precargar la escena


get_tree().change_scene_to_packed(siguiente_escena)  # Cambiar a la escena precargada (Godot 4.2)


queue_free()  # Liberar este nodo después del cambio de escena

pass # Replace with function body.




----------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------

Explicacion: Estas en juego de Godot 4.2 3D, y estas en un escenario, cuando pasas por un Area3D señalada, vas a parar a otro nivel del juego, con un cambio me funciona perfectamente al igual que cambiar un arma, ahora e de continuar practicando y trabajando estas opciones que son importantisimas, tambien estoy empezando a mirar videos de youtube sobre IA persecucion de enemigos al player, todo para Godot 4.2 que es motor de videojuegos que me a enganchado, me gusta un monton¡¡¡¡

domingo, 19 de mayo de 2024

Como hacer un cambio de arma en Godot 4.2 3D; script en GDScript y video tutorial;

 extends Area3D

var Esferauno = preload("res://ESCENAS/PLAYER NUEVO BORRABLE.tscn")


# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

pass



func _on_area_entered(area):


var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")





get_node("CollisionShape3D").queue_free()


pass # Replace with function body.



func _on_area_exited(area):


var Esferauno = Esferauno.instantiate()


add_child(Esferauno)


$"../Player".queue_free()

pass # Replace with function body.



EXPLICACION: video comentado con mi voz.


jueves, 16 de mayo de 2024

Esc para salir del juego con godot 4.2 script de GDScript;

 extends WorldEnvironment


# Called when the node enters the scene tree for the first time.

func _ready():

pass # Replace with function body.


func _process(delta):

# Verifica si se presiona la tecla Escape

if Input.is_action_pressed("ui_cancel"):

# Salir del juego

get_tree().quit()

---------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
EXPLICACION: Cambie la configuracion de pantalla, para que el juego salga en 1920 por 1080, y a la vez ocupa toda la pantalla , sin este script no puedes salir del juego sin presionar Ctrl mas alt mas Supr 
que es lo que se hace para cerrar un programa en concreto que no sabes por donde pararlo.....

martes, 14 de mayo de 2024

GDScript para Godot 4.2 repaso breve de animacion repetitiva de personaje; 2 opciones, la 2ª muy muy sencilla y eficaz;

 extends Node3D

var loop_enabled = true  # Flag to control loop execution

# Called when the node enters the scene tree for the first time.

func _ready():

# Optionally, initialize things here that only need to happen once

pass

# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta):

if loop_enabled:

# Play the animation

$AnimationPlayer.play("LASBRAZEAS")

# Function to start the continuous loop

func start_loop():

loop_enabled = true

# Function to stop the continuous loop

func stop_loop():

loop_enabled = false

--------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
Explicacion : algunas veces la animacion de un personaje quiero que sea repetitiva y no pare esta es la mejor forma de conseguirlo y funciona de maravilla....aunque claro esta cada caso tiene su problema y su forma de resolverse las IA  son una ayuda fantastica, no te lo resuelve a la primera pero te facilita soluciones.......
------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
extends Node3D

# Called when the node enters the scene tree for the first time.
func _ready():

$AnimationPlayer.play("GIRACAVESON")  # Start the animation

func _process(delta):

pass  # Not needed for the loop functionality (can be used for other logic)



---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
Explicacion: este script tan sencillo soluciona un problema de loop repetitivo, cuando en la escena y en la animacion no esta marcado como un loop repetitivo....





sábado, 11 de mayo de 2024

Un metodo de hacer un cañon y moverlo con Godot 4.2 en 3d.;

 



En el video podeis ver un cañon que muevo por el escenario para godot 4.2 en 3d.

Se trata de moverlo con las teclas flechas , de girarlo con -A- y con -D- que salte al presionar espacio. Y que apunte girando en eje X presionando teclas -z- y tecla -x-.


Tenia un fallo que e conseguido corregir y era que al girar el cañon a izquierda o a derecha y presionar a la vez teclas -z- o -x- el cañon se torcia de una forma muy extraña y terminaba arrastrandose por el suelo o girando al reves.



Entoces y tras muchas pruebas y consultas tambien a una IA, e dividido el cañon en dos partes, una base que es la que lo mueve hacia adelante hacia atrás hacia izquierda y hacia derecha, que contiene un script propio que solo hace eso,

Y sobre la base esta el cañon que tiene un script para el solo que no interviene en la base principal que sirve solo para girar de izquierda a derecha y para inclinar y apuntar arriba y abajo.




En el padre (la base) que es un Characterbody3d esta este script:


extends CharacterBody3D


var rotate_speed = 10.1 # Rotation speed


const SPEED = 5.0 # Movement speed

const JUMP_VELOCITY = 14.5 # Jump velocity


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _ready():

# Replace with function body

pass


func _physics_process(delta):

if not is_on_floor():

velocity.y -= gravity * delta # Apply gravity


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY # Jump


var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") # Get input direction


var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED # Move in X direction

velocity.z = direction.z * SPEED # Move in Z direction

else:

velocity.x = move_toward(velocity.x, 0, SPEED) # Stop horizontal movement

velocity.z = move_toward(velocity.z, 0, SPEED) # Stop vertical movement


move_and_slide() # Apply movement and collisions


var movimiento_vector = Vector3.ZERO # Initialize movement vector


if Input.is_action_pressed("A"): # Move forward

rotate_x(0.01) # Rotate on X axis (negative for down)

elif Input.is_action_pressed("B"): # Move backward

rotate_x(-0.01) # Rotate on X axis (positive for up)

elif Input.is_action_pressed("move_left"):

rotate_y(0.01) # Rotate on Z axis (positive for left)

elif Input.is_action_pressed("move_right"):

rotate_y(-0.01) # Rotate on Z axis (negative for right)


func _unhandled_input(event):

if event is InputEventKey and event.pressed:

if event.keycode == KEY_W:

translate(Vector3(0, 100, 0) * get_process_delta_time()) # Temporary movement (consider physics)







Ahora sobre esa base como hijo en el Area3D esta el siguiente script:



extends Area3D




var Bullet = preload("res://PROYECTIL.tscn")




func _ready():




pass # Replace with function body.






func _input(event):






if event is InputEventMouseButton:




if event.button_index == 1 and event.pressed :


#event.button_index == MOUSE_BUTTON_LEFT and event.pressed:


var bullet = Bullet.instantiate()







add_child(bullet)

func _unhandled_input(event):

if event is InputEventKey and event.pressed:

if event.keycode == KEY_W:

translate(Vector3(0, 0, 0) * get_process_delta_time()) # Temporary movement (consider physics)


#if event.keycode == KEY_


#apply_impulse(Vector3(0,40,4))#ORIGINAL



if event.keycode == KEY_Z:

rotate_x(0.02)

#pass

if event.keycode == KEY_X:

rotate_x(-0.02)

#pass





---------------------------------------------------------------------------------------------------------------------

---------------------------------------------------------------------------------------------------------------------

notas aclaratorias: este script contiene tambien la instaciacion de los proyectiles.



En resumen mirar el video y obserbar la disposicion de los elementos que componen el cañon la camara etc, etc, y la situacion de cada script en cada elemento, y creo que puede serle util a alguien.

martes, 7 de mayo de 2024

GDScript, produce disparos con el mouse, rafagas de disparos girando la rueda del mouse; todo rafagas;para disparos de 1 en 1, solamente presionar 1-----if event.button_index == 1 and event.pressed :;

 extends Area3D


var Bullet = preload("res://PROYECTIL.tscn")


func _ready():


pass # Replace with function body.



func _input(event):



if event is InputEventMouseButton:


#if event.button_index == 1:

#if event.button_index == 1 and event.pressed == false:

var bullet = Bullet.instantiate()



add_child(bullet)


---------------------------------------------------------------------------

para disparos de 1 en 1, sin rafaga, sin que salgan 2 disparos al presionar 1 y soltar 1, solamente presionar 1---------------if event.button_index == 1 and event.pressed :

----------------------------------------------------------------------------

extends Area3D


var Bullet = preload("res://PROYECTIL.tscn")


func _ready():


pass # Replace with function body.



func _input(event):



if event is InputEventMouseButton:


if event.button_index == 1 and event.pressed :

#event.button_index == MOUSE_BUTTON_LEFT and event.pressed:

var bullet = Bullet.instantiate()



add_child(bullet)


------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
al soltar la presion de la tecla del mouse....
--------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
extends Area3D

var Bullet = preload("res://PROYECTIL.tscn")

func _ready():

pass # Replace with function body.


func _input(event):


if event is InputEventMouseButton:

#if event.button_index == 1 and event.pressed :#AL,PRESIONAR
if event.button_index == 1 and not event.pressed :#AL SOLTAR
#event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
var bullet = Bullet.instantiate()


add_child(bullet)

domingo, 5 de mayo de 2024

GDScript; w-a-s-d y flechas teclado , girar y mover un cañon CharacterBody3D;ampliado alante atras izquierda derecha arriba y abajo inclinacion de cañon....!!!!;

 extends CharacterBody3D




var rotate_speed = 10.1 




const SPEED = 5.0

const JUMP_VELOCITY = 14.5


# Get the gravity from the project settings to be synced with RigidBody nodes.

var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")




func _ready(): 


pass # Replace with function body.


func _physics_process(delta):


if not is_on_floor():

velocity.y -= gravity * delta


# Handle jump.

if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Get the input direction and handle the movement/deceleration.

# As good practice, you should replace UI actions with custom gameplay actions.

#var input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward",)#PERFECTOOOOOOO

var input_dir = Input.get_vector("ui_left", "ui_right","A", "B",)# "A", "B" SOLO AMAGO PARA QUE NO BALLA ADELANTE A DETRAS

#var input_dir = Input.get_vector("A", "D", "W", "S")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()

if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)

move_and_slide()



var movimiento_vector = Vector3.ZERO  # Inicializar vector de movimiento


if Input.is_action_pressed("move_forward"):

rotate_x(0.01) # Mover en el eje X para rotar (negativo para abajo)

elif Input.is_action_pressed("move_backward"):

rotate_x(-0.01)   # Mover en el eje X para rotar (positivo para arriba)

elif Input.is_action_pressed("move_left"):

rotate_y(0.01)  # Mover en el eje Z para rotar (positivo para izquierda)

elif Input.is_action_pressed("move_right"):

rotate_y(-0.01) # Mover en el eje Z para rotar (negativo para derecha)


-------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------EXPLICACION: EN GODOT DESDE PROYECTO A CONFIGURACION PROYECTO SE HAN DE ASIGNAR LAS LETRAS move_left" SERIA LA -A-move_right" SERIA LA -D- Y ASI SUCESIVAMENTE, etc etc etc.....



-------------------------------------------------------------------------------------------------------------------------------

ampliado alante atras izquierda derecha arriba y abajo inclinacion de cañon....!!!!!!!!

--------------------------------------------------------------------------------------------------

extends CharacterBody3D




var rotate_speed = 10.1 




const SPEED = 5.0

const JUMP_VELOCITY = 14.5


# Get the gravity from the project settings to be synced with RigidBody nodes.

var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")




func _ready(): 


pass # Replace with function body.


func _physics_process(delta):


if not is_on_floor():

velocity.y -= gravity * delta


# Handle jump.

if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY


# Get the input direction and handle the movement/deceleration.

# As good practice, you should replace UI actions with custom gameplay actions.

#var input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward",)#PERFECTOOOOOOO

var input_dir = Input.get_vector("ui_left", "ui_right","ui_up", "ui_down",)# "A", "B" SOLO AMAGO PARA QUE NO BALLA ADELANTE A DETRAS

#var input_dir = Input.get_vector("A", "D", "W", "S")

var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()

if direction:

velocity.x = direction.x * SPEED

velocity.z = direction.z * SPEED

else:

velocity.x = move_toward(velocity.x, 0, SPEED)

velocity.z = move_toward(velocity.z, 0, SPEED)

move_and_slide()



var movimiento_vector = Vector3.ZERO  # Inicializar vector de movimiento


if Input.is_action_pressed("move_forward"):

rotate_x(0.01) # Mover en el eje X para rotar (negativo para abajo)

elif Input.is_action_pressed("move_backward"):

rotate_x(-0.01)   # Mover en el eje X para rotar (positivo para arriba)

elif Input.is_action_pressed("move_left"):

rotate_y(0.01)  # Mover en el eje Z para rotar (positivo para izquierda)

elif Input.is_action_pressed("move_right"):

rotate_y(-0.01) # Mover en el eje Z para rotar (negativo para derecha)




jueves, 2 de mayo de 2024

script movimiento por teclas w-a-s-d y espacio, GDScript;

extends CharacterBody3D


#func _unhandled_input(event):


const SPEED = 5.0
const JUMP_VELOCITY = 14.5

# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")



func _ready(): 


   # if event is InputEventKey and event.pressed:
   # if event.keycode == KEY_A:


pass # Replace with function body.







func _physics_process(delta):

if not is_on_floor():
velocity.y -= gravity * delta

# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY

# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backward",)
#var input_dir = Input.get_vector("A", "D", "W", "S")
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()

-------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------EXPLICACION: EN GODOT DESDE PROYECTO A CONFIGURACION PROYECTO SE HAN DE ASIGNAR LAS LETRAS move_left" SERIA LA -A-move_right" SERIA LA -D- Y ASI SUCESIVAMENTE, SE PODRIA PONER SIMPLEMENTE "a" Y ASIGNAR LA "a" Y ASI SUCESIVAMENTE, PERO ESTA MONTADO ASI.............