jueves, 1 de mayo de 2025

GDScript camara3d se traslada a unas coordenadas especificas en unos segundos y despues en otros segundos transcurridos se borra;Godot 4.4;

 extends Camera3D


var tiempo_transcurrido: float = 0.0

var tiempo_para_trasladar: float = 21.0

var tiempo_para_borrar_despues_traslado: float = 5.0

var trasladada: bool = false

var coordenadas_destino: Vector3 = Vector3(-23.386, 108.385, -14.401)


func _process(delta: float) -> void:

tiempo_transcurrido += delta


if !trasladada:

if tiempo_transcurrido >= tiempo_para_trasladar:

global_transform.origin = coordenadas_destino

trasladada = true

tiempo_transcurrido = 0.0 # Reiniciamos el tiempo para la cuenta del borrado

else:

if tiempo_transcurrido >= tiempo_para_borrar_despues_traslado:

queue_free()

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

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

Explicacion: muy util para hacer cambios de camara de puntos de vista y enfocar por varios puntos de la escena del juego, en mi juego actual la camara cae por una torre, esta asociada a un RigidBody3D cae lentamente visionando la altura de una torre mediebal, y cuando llega al suelo enfoca lo alto de la torre un primer plano de una princesa prisionera, al pasar unos segundo se borra la camara definitivamente y utiliza la del player para seguir jugando, la que esta activada con el (current).




En el GDScript inferior ademas añade la inclinacion de rotacion del eje Y de la camara....tambien se puede variar......


extends Camera3D

var tiempo_transcurrido: float = 0.0
var tiempo_para_trasladar: float = 21.0
var tiempo_para_borrar_despues_traslado: float = 5.0
var trasladada: bool = false
var coordenadas_destino: Vector3 = Vector3(-23.386, 108.385, -14.401)
var rotacion_destino_y: float = 0.14

func _process(delta: float) -> void:
tiempo_transcurrido += delta

if !trasladada:
if tiempo_transcurrido >= tiempo_para_trasladar:
global_transform.origin = coordenadas_destino
# Establecemos la rotación en el eje Y
rotation.y = rotacion_destino_y
trasladada = true
tiempo_transcurrido = 0.0 # Reiniciamos el tiempo para la cuenta del borrado
else:
if tiempo_transcurrido >= tiempo_para_borrar_despues_traslado:
queue_free()

domingo, 27 de abril de 2025

Con Godot 4.4 se borra en unos segundos la camara3d y hace tambien efecto de zoom;

 extends Camera3D


@export var zoom_velocidad: float = 10.0 # Velocidad a la que cambia el zoom

@export var zoom_minimo: float = 10.0 # FOV mínimo

@export var zoom_maximo: float = 300.0 # FOV máximo


var acercando: bool = true

var tiempo_transcurrido: float = 0.0

var tiempo_para_borrar: float = 10.0


func _process(delta: float) -> void:

if acercando:

fov -= zoom_velocidad * delta

if fov <= zoom_minimo:

fov = zoom_minimo

acercando = false

else:

fov += zoom_velocidad * delta

if fov >= zoom_maximo:

fov = zoom_maximo

acercando = true


tiempo_transcurrido += delta

if tiempo_transcurrido >= tiempo_para_borrar:

queue_free()


Con Godot 4.4 emite sonido al presionar boton izquierdo del raton; en GDScript;

 extends AudioStreamPlayer3D


@export var boton_accion: String = "mouse_left" # Acción del input a escuchar (por defecto: mouse_left)

@export var distancia_maxima: float = 20.0 # Distancia máxima para escuchar el sonido


func _ready():

max_distance = distancia_maxima


func _input(event):

if event is InputEventMouseButton:

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

play()

sábado, 26 de abril de 2025

GDScript Godot 4.4 animaciones perfectas de reposo andar y ataque;

 extends Node3D


var animacion_actual = "MakeHuman default skeleton|DESCANSO"


func _ready():

$AnimationPlayer.play(animacion_actual)


func _physics_process(delta):

var alguna_tecla_pulsada = false


# Comprobamos si alguna de las acciones está siendo presionada

if Input.is_action_pressed("achazo") or \

   Input.is_action_pressed("mouse_left") or \

   Input.is_action_pressed("mouse_right") or \

   Input.is_action_pressed("RETUERCE") or \

   Input.is_action_pressed("ANDAALANTECONW") or \

   Input.is_action_pressed("A") or \

   Input.is_action_pressed("D"):

alguna_tecla_pulsada = true


# Animación de ESPADAZO

if Input.is_action_pressed("achazo") or Input.is_action_pressed("mouse_left"):

if animacion_actual != "MakeHuman default skeleton|ESPADAZO":

$AnimationPlayer.play("MakeHuman default skeleton|ESPADAZO")

animacion_actual = "MakeHuman default skeleton|ESPADAZO"


# Animación de ATRABESAR

elif Input.is_action_pressed("mouse_right") or Input.is_action_pressed("RETUERCE"):

if animacion_actual != "MakeHuman default skeleton|ATRABESAR":

$AnimationPlayer.play("MakeHuman default skeleton|ATRABESAR")

animacion_actual = "MakeHuman default skeleton|ATRABESAR"


# Animación de ANDAR

elif Input.is_action_pressed("ANDAALANTECONW") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):

if animacion_actual != "MakeHuman default skeleton|ANDAR":

$AnimationPlayer.play("MakeHuman default skeleton|ANDAR")

animacion_actual = "MakeHuman default skeleton|ANDAR"


# Si no se presiona ninguna tecla, volvemos a la animación de descanso

elif not alguna_tecla_pulsada:

if animacion_actual != "MakeHuman default skeleton|DESCANSO":

$AnimationPlayer.play("MakeHuman default skeleton|DESCANSO")

animacion_actual = "MakeHuman default skeleton|DESCANSO"


viernes, 25 de abril de 2025

GDScript , instancia borra enemigo por tiempo, cambia un $CollisionShape3D2.translate(Vector3(0, 1111, 0));

 extends Area3D

# var Esferauno = preload("res://PERSONAJES MACABROS/ARAÑA/EXPLOTADA ARAÑA.tscn")

var Esferauno = preload("res://ENEMIGO MUERTO/ene_5enemigo_muerto-4-.tscn")

# var EsferaDOS = preload("res://CONSTRUCCIONES/rigid_body_3d_piedra_cae-3-.tscn")


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

func _ready() -> void:

pass # Replace with function body.



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

func _process(delta: float) -> void:

# translate(Vector3(0,0,-0.001))

pass



func _on_area_entered(area: Area3D) -> void:

var parent = get_parent()

var CollisionShape3Dcubo = parent.get_node("$CollisionShape3D2")


var esfera_uno_instancia = Esferauno.instantiate()

add_child(esfera_uno_instancia)


# $"." .queue_free()

#$CollisionShape3D2.queue_free()

$CollisionShape3D2.translate(Vector3(0, 1111, 0))

pass # Replace with function body.



func _on_area_exited(area: Area3D) -> void:

# $"." .queue_free()

call_deferred("_delayed_queue_free")

pass # Replace with function body.


func _delayed_queue_free():

await get_tree().create_timer(5.9).timeout

if is_instance_valid(self):

queue_free()

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

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

Explicacion: Desarrollando nuevo juego me encuentro con dificultades al destruir enemigos e instanciar la replica del mismo con otra animacion simulando su muerte, e de consultar constantemenete a la IA de programacion y e de hacer yo mismo cambios en los GDScript, por problemas y BUGS, en este caso parece logre una solucion con esta linea y moviendo en eje "y" hacia arriba un $CollisionShape3D2.translate(Vector3(0, 1111, 0))-----un CollisionShape3D2---- que me hacia bloquear el juego, al cambiarlo por un $CollisionShape3D2.translate(Vector3(0, 1111, 0)) me quitaba el problema de bloquear el juego y la linea original esta de aqui----$CollisionShape3D2.queue_free()----me lo bloqueba, seguramente es una chapuza pero si me resuelve el problema y el juego rueda con la solucion pues fenomeno.

viernes, 18 de abril de 2025

MUMMIES, CORRIDORS AND GORE;


  MUMMIES, CORRIDORS AND GORE


Estas en el interior de una pirámide egipcia, has profanado a los faraones y sus tesoros, ahora paga las consecuencias, huye¡¡ huye¡¡ huye¡¡ sal de la pirámide y ganaras el juego¡¡.




649 MB ocupa el juego en disco duro, para windows.



miércoles, 16 de abril de 2025

GDScript para Godot 4.4 hace animaciones al presionar teclas , traslada al personaje por si solo en uno de sus ejes y a los 20 segundos lo borra;

 extends Node3D


var animacion_actual = "Default simplified|GRITANDO"

var animacion_idle = "Default simplified|GRITANDO" # ANIMACION DE ESTAR QUIETO

var velocidad_traslacion = 90.5

var tiempo_vida = 20.0

var tiempo_transcurrido: float = 0.0


func _ready():

$AnimationPlayer.play(animacion_actual)

pass


func _physics_process(delta):

translate(Vector3( 0, 0, velocidad_traslacion * delta,))

tiempo_transcurrido += delta

if tiempo_transcurrido >= tiempo_vida:

queue_free() # Borra el nodo de forma segura

var alguna_tecla_pulsada = false


if Input.is_action_pressed("ui_accept") or \

   Input.is_action_pressed("mouse_left") or \

   Input.is_action_pressed("luzcasco") or \

   Input.is_action_pressed("ANDAATRASCONS") or \

   Input.is_action_pressed("ANDAALANTECONW") or \

   Input.is_action_pressed("ANDAALNTECONE") or \

   Input.is_action_pressed("GIRADERECHACOND") or \

   Input.is_action_pressed("A") or \

   Input.is_action_pressed("D"):

alguna_tecla_pulsada = true


if alguna_tecla_pulsada:

# Agacharse (al presionar "luzcasco")

if Input.is_action_just_pressed("luzcasco"):

if animacion_actual != "Default simplified|ANDAR":

$AnimationPlayer.play("Default simplified|ANDAR")

animacion_actual = "Default simplified|ANDAR"


# Volver a correr (al soltar "mouse_left")

if Input.is_action_just_released("mouse_left"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Andar hacia atrás (al presionar "ANDAATRASCONS")

if Input.is_action_just_pressed("ANDAATRASCONS"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"





# Volver a andar normal (al presionar "ANDAALANTECONW")

if Input.is_action_just_pressed("ANDAALANTECONW"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"




# Volver a andar normal (al soltar "ANDAALANTECONW")

if Input.is_action_just_released("ANDAALANTECONW"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"


# Otra acción para correr (al presionar "ANDAALNTECONE")

if Input.is_action_just_pressed("ANDAALNTECONE"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Volver a gritar (al soltar "GIRADERECHACOND")

if Input.is_action_just_released("GIRADERECHACOND"):

if animacion_actual != "Default simplified|GRITANDO":

$AnimationPlayer.play("Default simplified|GRITANDO")

animacion_actual = "Default simplified|GRITANDO"


# Correr con "A" (al presionar)

if Input.is_action_just_pressed("A"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Gritar con "A" (al soltar)

if Input.is_action_just_released("A"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"


# Correr con "D" (al presionar)

if Input.is_action_just_pressed("D"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Correr con "D" (al soltar) - REVISA ESTA LÓGICA

if Input.is_action_just_released("D"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"

else:

# Si no se presiona ninguna tecla, reproduce la animación de estar quieto

if animacion_actual != animacion_idle:

$AnimationPlayer.play(animacion_idle)

animacion_actual = animacion_idle