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........