jueves, 25 de abril de 2024

GDScript metodo de entrada de teclado, al presionar "W" rota un MeshInstance3D;

 extends MeshInstance3D


func _unhandled_input(event):

if event.pressed and event.keycode == KEY_W:


rotate_y(10.33)


#$AudioStreamPlayer3D.play()

# 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

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

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

EXPLICACION: Otro script que en teoria es corrcto pero me crea un conflicto con el resto de nodos y escenas de mi juego....e de estudiar que pasa........ como se ve en la captura de pantalla las flechitas azules de la izquierda indican que esta correcto....!!!!


Posible sonido al presionar espacio, para un Area3d con godot 4.2, si no existen otros sonidos; GDScript;

 extends Area3D




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

func _ready():

if Input.is_action_pressed("ui_accept"):

$"AudioStreamPlayer3D SUENANSUSPASOS".play()

if Input.is_action_just_released("ui_accept"):

$"AudioStreamPlayer3D SUENANSUSPASOS".play()

pass # Replace with function body.



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

func _process(delta):

#if Input.is_action_pressed("w"):


pass

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
EXPLICACION: el script es correcto, pero si hay otras areas 3d y el juego empieza a estar cargado de otros sonidos y elementos es posible que entre en conflicto con el resto de nodos y escenas, que es lo que me esta pasando ahora con un juego que empieza a ser amplio, de todas formas como me sale correcto lo pongo en el blog por si se quieren hacer pruebas,,,,,,Tiene que ser correcto porque a si lo marcan las flechitas azules
Tiene que ser correcto porque a si lo marcan las flechitas azules......

martes, 23 de abril de 2024

Script en 5 lineas hace animacion repetitiva en loop, para godot 4.2, en GDScript;

 extends Node3D



func _ready():

 

   $AnimationPlayer.play("CABREADA1") 


 

func _process(delta):

  

  pass

---------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------- EXPLICACION:
No tenia la animacion en LOOP y este sencillisimo script me lo soluciono.........

domingo, 21 de abril de 2024

Desde un Area3d Rota label3d constantemente y lo escala a mayor , borra SoftBody3, borra CollisionShape3D; GDScript Godot 4.2;

 extends Area3D



# 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):

$Label3DDICEIMBECIL.rotate_y(delta * 1.9)

pass



func _on_area_entered(area):

var escala_actual = $Label3DDICEIMBECIL.scale

$Label3DDICEIMBECIL.scale = escala_actual * 18.0

var parent = get_parent()

var Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.

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

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

Exlicacion: desde enlace muy buenos estos scripts...https://videojuegosenlineaasaco4.blogspot.com/2024/04/borrar-elementos-concretos-de-un-area3d_21.html

Borrar elementos concretos de un Area3D mediante scriptGDScript Godot 4.2; + poner un Label3d de texto que se amplia en esa colision;

 extends Area3D



# 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 escala_actual = $Label3DDICEIMBECIL.scale

$Label3DDICEIMBECIL.scale = escala_actual * 2.0

var parent = get_parent()

var Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.


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

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

EXPLICACION Y CAPTURA DE PANTALLA:

Tengo un personaje en Godot3d 4.2 al que por colision quiero borrarle el vestido, en el script me encontre con fallos que provocaban que el juego se bloquease, cuando el player tocaba  al personaje le borraba el vestido y funcionaba bien, pero cuando lo volvia a tocar se bloqueaba el juego porque ....no borraba tambien el CollisionShape3Dquieroborrartambien que producia la orden de borrar el vestido, entonces entendi que al volver a tocar ese CollisionShape3Dquieroborrartambien que en el script mandaba borrar el SoftBody3Dvestido y el programa al correr veia que no existia ese elemento a borrar porque ya se hizo anteriormente, se contradecia y se paraba ,bloqueaba el juego, SOLUCION.......borrar tambien al colisionar, tocar,  ese CollisionShape3Dquieroborrartambien y asi e conseguido solucionar ese bloqueo del juego, e tenido que pensar y razonar y me cuesta mucho la verdad, se me da muy mal programar, pero no me queda otra, si no imposible desarrollar con Godot 4.2

Hemos ampliado el script con nuebo elemento un label3d que pone un texto en 3d, lo escala en esa colision y en el script e señalado las dos lineas nuevas de verde todo funciona perfectamente...







Borrar elementos concretos de un Area3D mediante scriptGDScript Godot 4.2;

 extends Area3D



# 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 Turbo = parent.get_node("$SoftBody3Dvestido")

$SoftBody3Dvestido.queue_free()

$CollisionShape3Dquieroborrartambien.queue_free()

pass # Replace with function body.

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

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

EXPLICACION Y CAPTURA DE PANTALLA:

Tengo un personaje en Godot3d 4.2 al que por colision quiero borrarle el vestido, en el script me encontre con fallos que provocaban que el juego se bloquease, cuando el player tocaba  al personaje le borraba el vestido y funcionaba bien, pero cuando lo volvia a tocar se bloqueaba el juego porque ....no borraba tambien el CollisionShape3Dquieroborrartambien que producia la orden de borrar el vestido, entonces entendi que al volver a tocar ese CollisionShape3Dquieroborrartambien que en el script mandaba borrar el SoftBody3Dvestido y el programa al correr veia que no existia ese elemento a borrar porque ya se hizo anteriormente, se contradecia y se paraba ,bloqueaba el juego, SOLUCION.......borrar tambien al colisionar, tocar,  ese CollisionShape3Dquieroborrartambien y asi e conseguido solucionar ese bloqueo del juego, e tenido que pensar y razonar y me cuesta mucho la verdad, se me da muy mal programar, pero no me queda otra, si no imposible desarrollar con Godot 4.2



miércoles, 17 de abril de 2024

Script para animar humanoide y rotarlo a si mismo desde un nodo3d para godot 4.2;

 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_y(0.1)

$AnimationPlayer.play("LAENFADA")

pass


martes, 16 de abril de 2024

Script borra softbody3d de un personaje el vestido; godot 4.2; Script PARA RigidBody3D Y ALOS 3 SEGUNDOS LO BORRA ;

 extends Area3D



# 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):

$"LA VIEJA/SoftBody3D".queue_free()

$"LA VIEJA/SoftBody3D3".queue_free()

$"LA VIEJA/SoftBody3D4".queue_free()

$"LA VIEJA/SoftBody3D2".queue_free()

pass # Replace with function body.

------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
EXPLICACION:  De un Area3d (donde e puesto el script) parten 2 hijos "la vieja" (un node3D) y el otro un CollisionShape3D....los SoftBody3D los cuatro diferentes del script son hijos del "la vieja" (un node3D) y nietos del area3d principal . funciona a la perfeccion cuando el player choca con  CollisionShape3D  se borra el vestido ,este ejemplo es de arriba, abajo otra variante que funciona en el cubo en la ropa no funciona............¡¡atencion estos scripts cuando repite  colisionar el juego se bloquea!! aun tiene fallos.........
--------------------------------------------------------------------------------------------------------------------------
extends Area3D


# 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):
#$"LA VIEJA/SoftBody3D3".queue_free()
#$"LA VIEJA/SoftBody3D4".queue_free()
#$"LA VIEJA/SoftBody3D2".queue_free()
#$"LA VIEJA/CSGBox3Dgira".rotate_x(1)
$"LA VIEJA/CSGBox3Dgira".scale /= 2.5
$"LA VIEJA/SoftBody3D".scale /= 0.005
$"LA VIEJA/SoftBody3D2".scale /= 0.005
$"LA VIEJA/SoftBody3D3".scale /= 0.005
$"LA VIEJA/SoftBody3D4".scale /= 0.005
pass # Replace with function body.



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

ESTE DE DEBAJO SI FUNCIONA SIN PROBLEMAS , SE PONE A UN  RigidBody3D Y ALOS 3 SEGUNDOS LO BORRA NO NECESITA SEÑAL TAMPOCO.
-------------------------------------------------------------------------------------------------------------
extends RigidBody3D

var timer = 0.0

func _physics_process(delta):
# Incrementar el temporizador
timer += delta

# Eliminar el RigidBody3D después de 3 segundos
if timer >= 3.0:
queue_free()


lunes, 15 de abril de 2024

GDScript proboca explosion y borra barco y sale barco roto, instancia explosion bolas instancia barco roto y borra barco sin destruir;

 extends Area3D


var esfera_prefab = preload("res://BARCO Y ELEMENTOS DEL BARCO/BOTE/BOTECAIDO.tscn")  # Precarga el prefab del barco (bote caído)

var explosion_prefab = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn")  # Precarga el prefab de la explosión (invento genial)


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

func _ready():

pass  # No hay necesidad de código inicial en este ejemplo


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

func _process(delta):

pass  # No hay necesidad de código por frame en este ejemplo


# Detecta cuando otro nodo entra en el área

func _on_area_entered(area):

# Verifica si el objeto que entró tiene un nodo CollisionShape3D

if area.has_node("CollisionShape3D"):


var barco_instancia = esfera_prefab.instantiate()


# Crea una instancia del prefab de la explosión (invento genial)

var explosion_instancia = explosion_prefab.instantiate()


# Agrega las instancias como hijos de este nodo

add_child(barco_instancia)

add_child(explosion_instancia)


# Detecta cuando otro nodo sale del área (opcional)

func _on_area_exited(area):

var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")


get_node("CollisionShape3D").queue_free()  # Intento de eliminar CollisionShape3D propio (comentado)

---------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
EXPLICACION:::::::
estructura padres e hijos .. padre principal de todo  WorldEnvironment hijo donde esta el script un Area3d esta tiene de nieto un CollisionShape3D de este sale dos vicnietos un MeshInstance3D y otro MeshInstance3D con nombre "bote2


Instancia bolas cuando entra en un Area3d el player y cuando presiona boton del mouse, para godot 4,2 3D; GDScript;

 extends Area3D


var Bullet = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn")


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


var bullet = Bullet.instantiate()



add_child(bullet)



func _on_area_entered(area):

var bullet = Bullet.instantiate()



add_child(bullet)

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

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

En el script de debajo funciona solo cuando pasa por su Area3d, pusimos signo"#" a lo que no queremos que ejecute

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

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

extends Area3D var Bullet = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn") func _ready(): pass # Replace with function body. #func _input(event): #if event is InputEventMouseButton: #if event.button_index == 1: #var bullet = Bullet.instantiate() #add_child(bullet) func _on_area_entered(area): var bullet = Bullet.instantiate() add_child(bullet)




A los 3 segundos borra nodo3d, y todo su contenido para Godot 4.2; Script GDScript;

 extends Node3D


var tiempo_transcurrido = 0.0 # Variable para almacenar el tiempo transcurrido


func _process(delta):

# Actualizar el tiempo transcurrido

tiempo_transcurrido += delta


# Eliminar el nodo después de 3 segundos

if tiempo_transcurrido >= 3.0:

queue_free() # Elimina el nodo de la escena


viernes, 12 de abril de 2024

Anima label y lo borra por tiempo, titulo de juego; para Godot 4.2;

 extends Label


var tiempo_de_vida = 4.0 # Duración en segundos antes de eliminar el Label


func _ready():

# Obtener el Label que queremos usar

var label_tiempo_vida = $"."


# Mostrar el texto del Label en este Label

text = label_tiempo_vida.text


# Iniciar el temporizador

$Timer.start(tiempo_de_vida)


func _on_timer_timeout():

# Eliminar el Label

queue_free()


func _process(delta):

$AnimationPlayer.play("FONDOMUEBETE")

# Si el tiempo de vida ha llegado a 0, eliminar el Label

if tiempo_de_vida <= 0:

_on_timer_timeout()

return


# Reducir el tiempo de vida en cada frame

tiempo_de_vida -= delta


EN GODOT 4.2, SCRIPT POR PUNTUACION SI LLEGA A LOS 8 PUNTOS BORRA LA ESCENA Y CAMBIA A OTRA CON CAMARA FUNCIONA¡¡¡¡¡¡¡¡;

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

------------------------------------------------------------------------------------------------------------------
SCRIPT POR PUNTUACION SI LLEGA A LOS 8 PUNTOS BORRA LA ESCENA Y CAMBIA A OTRA CON CAMARA FUNCIONA¡¡¡¡¡¡¡¡
---------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
extends Area3D  

#var fuerza_intensidad = 110.9  // Variable que define la intensidad de la fuerza que se aplicará en la colisión.
var score = 0  


# Se llama cuando el nodo ingresa al árbol de escena por primera vez.

func _ready():
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar configuraciones iniciales.


# Se llama en cada frame del juego. 'delta' es el tiempo transcurrido desde el frame anterior.

func _process(delta):
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar acciones que se repiten cada frame.


func _on_area_entered(area):  # Se llama cuando otro objeto entra en el área de colisión de este nodo.

# Actualiza el texto del Label3D para mostrar la puntuación actual.
$Label3D.text = str(score)

# Aumenta la puntuación en 1.
score += 1

# Reproduce la animación "EXPLOTA" del AnimationPlayer adjunto al padre de este nodo (../ indica subir un nivel en la jerarquía del árbol de escena).
$"../AnimationPlayer".play("EXPLOTA")

# Reproduce el AudioStreamPlayer3D asociado al AnimationPlayer para generar un sonido de explosión.
$"../AnimationPlayer/AudioStreamPlayer3D".play()
# La parte comentada define una dirección de fuerza, por ahora no se usa en el código.
# var direccion_fuerza = Vector3(fuerza_intensidad, 0.0, 0.0)

# Puedes agregar aquí código para aplicar la fuerza a objetos que entren en colisión.

# Si la puntuación alcanza los 100 puntos, cambia de escena a "AMA".
if score == 8:
var siguiente_escena = preload("res://BARCO Y ELEMENTOS DEL BARCO/BARRIL EXPLOSIBO/bidon.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



viernes, 5 de abril de 2024

Captura en video de mi proximo videojuego desarrollandolo con Godot 4.2, comentarios;

El juego estoy desarrollandolo con Godot 4.2 en 3D y estoy muy orgulloso de lo que boy consiguiendo, animaciones y modelado de puertas, entorno que se desembuelve en un barco, efectos de particulas, efecto de movimiento del mar, modelado y animacion de gaviotas con blender, sonidos, y un particular sentido del humor a lo largo del videojuego, que sera de exploracion y de sorpresas chocantes, sera para mayores de 18 años y a final de este mes quizas ya lo publique....en itch.io por su puesto.
Efectos de tela y ropa...luz iluminacion me encanta que tras poner esfuerzo en el modelado y animacion de una puerta o una gaviota u otro personaje o elemento del juego luego puedo simplemente copiarlo y duplicarlo e ir contruyendo el juego en si mismo



 

martes, 2 de abril de 2024

Script para Godot 4.2 3D , contenido en un CPUParticles3D el script , proboca que a los 3 segundos se dirija a una escena diferente del juego;

 extends CPUParticles3D


var tiempo_transcurrido: float = 0.0


# Función que se ejecuta al entrar la escena por primera vez.

func _ready():

pass  # Reemplaza con el cuerpo de la función si es necesario.


# Función que se ejecuta cada frame. 'delta' es el tiempo transcurrido desde el frame anterior.

func _process(delta):

tiempo_transcurrido += delta

if tiempo_transcurrido >= 3.0:

# Cambiar la escena a "otro.tscn"

var siguiente_escena = preload("res://BARCO Y ELEMENTOS DEL BARCO/BARRIL EXPLOSIBO/bidon.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

-------------------------------------------
-------------------------------------------
Explicacion: muy buen script a los 3 segundos borra la escena y se dirije a otra diferente, con estos pasos podre hacer avances muy importantes en godot 4.2 , como player abatido y cambio a escena de este cuando cae y retorno a riniciar el juego, cambios de camaras tambien creo podre hacer.......



--------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
SCRIPT POR PUNTUACION SI LLEGA A LOS 8 PUNTOS BORRA LA ESCENA Y CAMBIA A OTRA CON CAMARA FUNCIONA¡¡¡¡¡¡¡¡
---------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
extends Area3D  

#var fuerza_intensidad = 110.9  // Variable que define la intensidad de la fuerza que se aplicará en la colisión.
var score = 0  


# Se llama cuando el nodo ingresa al árbol de escena por primera vez.

func _ready():
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar configuraciones iniciales.


# Se llama en cada frame del juego. 'delta' es el tiempo transcurrido desde el frame anterior.

func _process(delta):
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar acciones que se repiten cada frame.


func _on_area_entered(area):  # Se llama cuando otro objeto entra en el área de colisión de este nodo.

# Actualiza el texto del Label3D para mostrar la puntuación actual.
$Label3D.text = str(score)

# Aumenta la puntuación en 1.
score += 1

# Reproduce la animación "EXPLOTA" del AnimationPlayer adjunto al padre de este nodo (../ indica subir un nivel en la jerarquía del árbol de escena).
$"../AnimationPlayer".play("EXPLOTA")

# Reproduce el AudioStreamPlayer3D asociado al AnimationPlayer para generar un sonido de explosión.
$"../AnimationPlayer/AudioStreamPlayer3D".play()
# La parte comentada define una dirección de fuerza, por ahora no se usa en el código.
# var direccion_fuerza = Vector3(fuerza_intensidad, 0.0, 0.0)

# Puedes agregar aquí código para aplicar la fuerza a objetos que entren en colisión.

# Si la puntuación alcanza los 100 puntos, cambia de escena a "AMA".
if score == 8:
var siguiente_escena = preload("res://BARCO Y ELEMENTOS DEL BARCO/BARRIL EXPLOSIBO/bidon.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



Script que al explosionar un recipiente, a los 5 segundos se borran las particulas y se reinicia el juego, en Godot 4.2;

extends CPUParticles3D

var tiempo_transcurrido: float = 0.0


# 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):

tiempo_transcurrido += delta

if tiempo_transcurrido >= 5.0:

get_tree().reload_current_scene()

queue_free()

pass

----------------------------------------------------------------
----------------------------------------------------------------
-----------------------------------------------------------------
EXPLICACION:
Mi player toca un bidon de gasolina, este explota y alos 5 segundos se reinicia el juego ademas de borrar sus particulas.......

Script en Godot 4.2 3d, borra particulas a los 5 segundos;

 extends CPUParticles3D

var tiempo_transcurrido: float = 0.0


# 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):

tiempo_transcurrido += delta

if tiempo_transcurrido >= 5.0:

queue_free()

pass


viernes, 29 de marzo de 2024

Script para Godot 4.2 crea animacion 1 sola vez traslada al personaje en eje "z" y alos 1,8 segundos lo borra del juego;

 extends Node3D

var speed = 15

var tiempo_transcurrido = 0.0


# Variable para controlar si la animación ya se ha reproducido


var animacion_reproducida = false




# Llamado cuando el nodo entra al árbol de escena por primera vez.


func _ready():


pass  # Mantenemos esta parte sin cambios




# Llamado cada frame. 'delta' es el tiempo transcurrido desde el frame anterior.


func _process(delta):

var movimiento = Vector3(0, 0, speed * delta)

#var movimiento = Vector3(speed * delta, 0, 0)

# Aplicar el movimiento a la posición del nodo

translate(movimiento)

# Actualizar el tiempo transcurrido

tiempo_transcurrido += delta


# Eliminar el nodo después de 2 segundos

if tiempo_transcurrido >= 1.8:

queue_free()



# Si la animación no se ha reproducido aún


if not animacion_reproducida:


# Reproducimos la animación "MUERTASEPONEPIE"


$AnimationPlayer.play("CAE")


# Establecemos la variable a true para indicar que ya se reprodujo


animacion_reproducida = true


Script para Godot 4.2 traslada un objeto en eje "z" ; tambien pruduce su animacion para 1 sola vez y se detiene esta animacion;

 extends Node3D

var speed = 15



# Variable para controlar si la animación ya se ha reproducido


var animacion_reproducida = false




# Llamado cuando el nodo entra al árbol de escena por primera vez.


func _ready():


pass  # Mantenemos esta parte sin cambios




# Llamado cada frame. 'delta' es el tiempo transcurrido desde el frame anterior.


func _process(delta):

var movimiento = Vector3(0, 0, speed * delta)

#var movimiento = Vector3(speed * delta, 0, 0)

# Aplicar el movimiento a la posición del nodo

translate(movimiento)

Script para Godot 4.2; suma puntos, produce animacion, produce sonido;

 extends Area3D

var score = 0


# 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):

$Label3D.text = str(score)

score += 1

$"../AnimationPlayer".play("EXPLOTA")

$"../AnimationPlayer/AudioStreamPlayer3D".play()

pass # Replace with function body.



-----------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------
EXPLICACION;
Esta escript puesto en un Area 3d al player hace que cambie la animacion del player cuando su area3d toca algo , otra area3d , hace que sume 1 punto y hace que produzca un sonido.....El area3d parte del personaje y tiene de hijo un CollisionShape3D y tiene de hijo tambien un Label3D.

miércoles, 27 de marzo de 2024

SCRIPT PARA GODOT 4.2 CUANDO TOCA UN AREA3D EL PLAYER CAMBIA SU ANIMACION Y PRODUCE UN SONIDO;

 extends Area3D



# 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):

$"../AnimationPlayer".play("EXPLOTA")

$"../AnimationPlayer/AudioStreamPlayer3D".play()

pass # Replace with function body.


martes, 26 de marzo de 2024

Una forma de audio para godot 4.2; Script gdscript; pulsando boton del mouse y soltando;

 extends AnimationPlayer


var audio_stream: AudioStream


func _ready():

audio_stream = load("res://EL SONIDO/RUJEScorto.ogg")

var audio_player = AudioStreamPlayer.new()

audio_player.stream = audio_stream

add_child(audio_player)


#func _on_AnimationPlayer_input_event(event):

func _input(event):




if event is InputEventMouseButton:




if event.button_index == 1:

$AudioStreamPlayer3D.play()



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

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

En el script de devajo al soltar la pulsacion se detiene el sonido , el script inferior es correcto....

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

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

extends AnimationPlayer


var audio_stream: AudioStream


func _ready():

audio_stream = load("res://EL SONIDO/RUJEScorto.ogg")

var audio_player = AudioStreamPlayer.new()

audio_player.stream = audio_stream

add_child(audio_player)


func _input(event):

if event is InputEventMouseButton:

if event.button_index == 1:  # Botón izquierdo del mouse

if event.pressed:

$AudioStreamPlayer3D.play()  # Reproduce el sonido al presionar

else:

$AudioStreamPlayer3D.stop()  # Detiene el sonido al soltar



lunes, 25 de marzo de 2024

Script para godot 4.2 para que cuando algo toque una rueda esta gire;

 extends MeshInstance3D



# 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_3d_area_entered(area):

rotate_y(2.5)

pass # Replace with function body.

-------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
Explicacion:
 partiendo de un nodo MeshInstance3D con hijo un Area3d y un nieto CollisionShape3D cuando algo toca el CollisionShape3D  el MeshInstance3D  gira, el script lo tiene el MeshInstance3D y la señal el Area3d......

martes, 19 de marzo de 2024

Scripts para Godot 4.2 que instancia una sola vez; por mouse y por temporizador ; y repetitivamente;

 extends Area3D


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

var has_fired = false


func _ready():

pass


func _input(event):

if event is InputEventMouseButton && !has_fired:

if event.button_index == 1:

var bullet = Bullet.instantiate()

add_child(bullet)

has_fired = true


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

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

El de abajo instancia cada vez que se presiona boton del mouse

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

extends Area3D


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


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


var bullet = Bullet.instantiate()



add_child(bullet)

--------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------
instancia ahora por tiempo a los 2 segundos transcurridos  constantemente
-------------------------------------------------------------------------------------------------------

extends Area3D

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

func _ready():
# Iniciar un temporizador
$Timer.start(2.0)

#func _on_Timer_timeout():
# Instanciar la bala después de 2 segundos
#var bullet = Bullet.instantiate()
#add_child(bullet)


func _on_timer_timeout():
var bullet = Bullet.instantiate()
add_child(bullet)
------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
Instancia una sola vez por tiempo al pasar 2 segundos
-------------------------------------------------------------------------------------------------------------------

extends Area3D

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

var has_fired = false

func _ready():
# Iniciar un temporizador
$Timer.start(2.0)

#func _on_Timer_timeout():
# Instanciar la bala después de 2 segundos
#var bullet = Bullet.instantiate()
#add_child(bullet)


func _on_timer_timeout():
if not has_fired:
var bullet = Bullet.instantiate()
add_child(bullet)
has_fired = true


jueves, 14 de marzo de 2024

Brothel for retired women, juego echo con Godot 4.2 en 3dimensiones;

 

CSGCylinder3D APARECE DESAPARECE CADA 0.25 SEGUNDOS;

 extends CSGCylinder3D


var tiempo_transcurrido: float = 0.0 # Tiempo transcurrido desde el último cambio de estado


func _physics_process(delta):

# Acumular el tiempo transcurrido

tiempo_transcurrido += delta


# Cambiar la visibilidad del CSGCylinder3D cada 0.25 segundos

if tiempo_transcurrido >= 0.25:

visible = !visible # Invertir el estado actual de la visibilidad

tiempo_transcurrido = 0.0


Script GDScript completo en español para encender y apagar una luz cada 0.25 segundos;

 extends OmniLight3D


var tiempo_transcurrido: float = 0.0 # Tiempo transcurrido desde el último cambio de estado


func _physics_process(delta):

# Acumular el tiempo transcurrido

tiempo_transcurrido += delta


# Cambiar el estado de la luz cada 0.25 segundos

if tiempo_transcurrido >= 0.25:

visible = !visible # Invertir el estado actual de la luz

tiempo_transcurrido = 0.0


miércoles, 13 de marzo de 2024

Script en GDScript godot 4.2 3 dimensiones Animacion la aga 1 sola vez y se pare cuando llege al ultimo digamos fps o fotograma;

 extends Node3D


# Variable para controlar si la animación ya se ha reproducido

var animacion_reproducida = false


# Llamado cuando el nodo entra al árbol de escena por primera vez.

func _ready():

pass  # Mantenemos esta parte sin cambios


# Llamado cada frame. 'delta' es el tiempo transcurrido desde el frame anterior.

func _process(delta):

# Si la animación no se ha reproducido aún

if not animacion_reproducida:

# Reproducimos la animación "MUERTASEPONEPIE"

$AnimationPlayer.play("MUERTASEPONEPIE")

# Establecemos la variable a true para indicar que ya se reprodujo

animacion_reproducida = true


domingo, 10 de marzo de 2024

Cambiar el icono de tu juego compilado con resource_hacker;

 Me vuelto loco toda la mañana para poder cambiar el icono de mi exe de mi juego, personalizar los iconos es posible con Godot 4.2, cada maestrillo tiene su librillo, yo ayudandome de gimp y de resource_hacker, consigo personalizar mi icono del juego, ....












sábado, 9 de marzo de 2024

Luces de neon con Godot 4.2 muy facil;

 

En el video muestro como hacer luces de neon en godot 4.2 es secillisimo, solo hay que poner un StandardMaterial3D luego en Albedo, selecciona un color blanco puro (RGB 255, 255, 255).

u otro color  y . Para aumentar la luminosidad, puedes ajustar la propiedad Emission a un valor superior a 0.

  • Aumenta la intensidad de la luz OmniLight.
  • (Opcional) Puedes agregar un segundo OmniLight con un color ligeramente diferente para crear un efecto de brillo más complejo.

Esta base es muy muy buena y se puede mejorar aun mas pero de momento y para llevar apenas 4 meses no llega aprendiendo Godot 4.2 estoy muy pero que muy satisfecho, Godot 4.2 es alucinante cuando empieza a conocerse su funcionamiento.....


Configurar sonido de cercania y de lejania con godot 4.2;

 

He conseguido con mucha facilidad que el player oiga algo cuando lo tiene que oir, osea cerca de donde se produce un sonido ,y cuando esta lejos lo deja de oir........
no explico mucho mas de momento con el video ya se puede aprender el funcionamiento, solo hay que manipular una varra y poner un numero inferior a 1, y asi medimos las distancias.........

miércoles, 6 de marzo de 2024

SCRIPT EN GDSCRIPT PARA GODOT4.2 3D PARA TRASLADAR SUAVEMENTE POR EJE "Y" ;

 extends MeshInstance3D



var speed = 0.2  # Unidades por segundo


#var tiempo_transcurrido = 0.0  # Tiempo en segundos




# Función que se ejecuta en cada frame


func _process(delta):


# Calcular movimiento basado en la velocidad y el tiempo delta


var movimiento = Vector3(0, speed * delta, 0)




# Aplicar el movimiento a la posición del nodo


translate(movimiento)


Ejemplo de cambiar de escena con Godot 4.2 3d;

 extends Node


func _on_Area3D_body_entered(body: Node):

if body.name == "Player":

# Cambiar a la siguiente escena.

get_tree().change_scene("res://Escena_2.tscn")

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

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

notas: 

un script para godot 4.2 3d en el que hay 2 escenas, en una el player pasa por un area3d y al tocar esa area se cambia a la escena siguiente, el player tiene su propio colider, y el area3d tambien, para que detecte las colisiones, hazlo simple, explica en español, y si es posible que use solo la memoria que gaste cada escena .....................

Consultado a la IA, me a echo el script de arriba pero aun e de probarlo y razonarlo, de todas formas lo pongo en el blog porque es un script muy corto....ya lo estudiare y lo ratificare mas adelante.........


LO QUE ME EXPLICA LA IA: 

Explicación del script:

  • _on_Area3D_body_entered es una función que se llama cuando un nodo entra en el área 3D.
  • body es el nodo que ha entrado en el área.
  • Se comprueba si el nombre del nodo que ha entrado es "Player".
  • Si se cumple la condición, se cambia a la escena "Escena_2.tscn".

4. Optimización de memoria:

  • Utilizar la carga diferida de escenas: Puedes configurar la carga diferida para las escenas que no se necesitan de inmediato. Esto reduce la cantidad de memoria utilizada al inicio del juego.
  • Eliminar objetos no utilizados: Elimina los objetos que ya no sean necesarios de la escena para liberar memoria.
  • ------------------------------------------------------------------------------------------------------------------------
  • -------------------------------------------------------------------------------------------------------------------------
  • NOTAS: la IA me ayuda un monton pero hay que saber razonarlo y aplicarlo, mas adelante usare y probare esta informacion.....de mientras miro tutoriales de youtube....cuanta mas informacion y mas practicas y mas se trabaje el tema mas pronto se aprende.

lunes, 4 de marzo de 2024

Otra forma de borrar un label trancurrido tiempo con Godot4.2; y siempre ayudandome de una IA; tambien borrar un RigidBody3D;

 extends Label


var tiempo_de_vida = 3.0 # Duración en segundos antes de eliminar el Label


func _ready():

# Obtener el Label que queremos usar

var label_tiempo_vida = $"."


# Mostrar el texto del Label en este Label

text = label_tiempo_vida.text


# Iniciar el temporizador

$Timer.start(tiempo_de_vida)


func _on_timer_timeout():

# Eliminar el Label

queue_free()


func _process(delta):

# Si el tiempo de vida ha llegado a 0, eliminar el Label

if tiempo_de_vida <= 0:

_on_timer_timeout()

return


# Reducir el tiempo de vida en cada frame

tiempo_de_vida -= delta



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

explicacion: en esta linea--------

 func _ready():

# Obtener el Label que queremos usar         

 var label_tiempo_vida = $"."          --------



- e arrastrado mi label desde la escena, eso lo razone yo, es indispensable si no se sabe programar como es mi caso, la ayuda de una IA, es como si trabajases con un amigo , la IA es una cosa tremenda, en un primer script la IA me ponia esta linea de codigo , por esta otra-------


func _ready():

# Mostrar el texto

text = "W-A-S-D Y MOUSE BOTONES " + str(tiempo_de_vida) + " segundos."


Escribia el texto directamente, pero a mi me interesaba arrastrar desde la escena el label que ya tenia preparado........y lo e conseguido, fantastico¡¡¡¡¡


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


OTRO EJEMPLO DE BORRAR POR TIEMPO UN   RigidBody3D


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

extends RigidBody3D



var tiempo_de_vida = 2.5  # Duración en segundos antes de eliminar la piedra

func _ready():
# Iniciar temporizador
$Timer.start(tiempo_de_vida)





func _on_timer_timeout():
queue_free()
pass # Replace with function body.


Una forma de borrar un label en godot4.2 transcurrido un tiempo;

 extends Label


var tiempo_de_vida = 12.5 # Duración en segundos antes de eliminar el Label


func _ready():

# Mostrar el texto

text = "W-A-S-D Y MOUSE BOTONES " + str(tiempo_de_vida) + " segundos."


# Iniciar el temporizador

$Timer.start(tiempo_de_vida)


func _on_timer_timeout():

# Eliminar el Label

queue_free()


func _process(delta):

# Si el tiempo de vida ha llegado a 0, eliminar el Label

if tiempo_de_vida <= 0:

_on_timer_timeout()

return


# Reducir el tiempo de vida en cada frame

tiempo_de_vida -= delta


sábado, 2 de marzo de 2024

Futuro proyecto con godot 4.2 en 3d;

 

Con lo que boy aprendiendo y practicando, muestro una captura de video de mi proximo proyecto........

jueves, 29 de febrero de 2024

GDScript para godot4.2 3d movimiento continuo de un area3d y que a los 2 segundos se borra;

 extends Area3D


var speed = 15  # Unidades por segundo

var tiempo_transcurrido = 0.0  # Tiempo en segundos


# Función que se ejecuta en cada frame

func _process(delta):

    # Calcular movimiento basado en la velocidad y el tiempo delta

    var movimiento = Vector3(speed * delta, 0, 0)


    # Aplicar el movimiento a la posición del nodo

    translate(movimiento)


    # Actualizar el tiempo transcurrido

    tiempo_transcurrido += delta


    # Eliminar el nodo después de 2 segundos

    if tiempo_transcurrido >= 2.0:

        queue_free()


GDSCRIPT PARA GODOT 4.2 3D MOVIMIENTO CONTINUO LATERAL;

 extends Area3D


var speed = 15  # Unidades por segundo


# Función que se ejecuta en cada frame

func _process(delta):

    # Calcular movimiento basado en la velocidad y el tiempo delta

    var movimiento = Vector3(speed * delta, 0, 0)


    # Aplicar el movimiento a la posición del nodo

    translate(movimiento)


GDScript para Godot4.2 3d animacion elavorada con explicacion del GDScript;

 extends Node3D


var animacion_actual = "ANDAR"


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


#if animacion_actual != "CHISPA":


$AnimationPlayer.play("CHISPA")


animacion_actual = "CHISPA"


# Acción del motor del juego


#elif Input.is_action_pressed("ui_up"):

if event is InputEventMouseButton:


if event.button_index == 2:


#if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Saltar


elif Input.is_action_pressed("ui_accept"):


if animacion_actual != "SALTAR":


$AnimationPlayer.play("SALTAR")


animacion_actual = "SALTAR"


# Moverse hacia la izquierda


elif Input.is_action_pressed("ui_left"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Moverse hacia la derecha


elif Input.is_action_pressed("ui_right"):


if animacion_actual != "ANDAR":


$AnimationPlayer.play("ANDAR")


animacion_actual = "ANDAR"


# Animación "BALANCE" en bucle


else:


# Comprueba si la animación actual no es "BALANCE" o si no se está reproduciendo ninguna animación

if animacion_actual != "BALANCE" or not $AnimationPlayer.is_playing():


$AnimationPlayer.play("BALANCE")


animacion_actual = "BALANCE"

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

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

EXPLICACION:

resuelto, player que tiene un movi miento continuo, y que si presiono boton izquierdo del raton ,cambia su animacion , si presiono boton derecho del raton cambia a otra animacion y tambien cambia animaciones presionando teclas flechas...(junto teclado numerico)