Godot, scripts para Godot estudios y aprendizajes, Creacion de videojuegos. Creacion y publicacion de videojuegos en internet. Como hacer videojuegos. C# unity. Animaciones unity blender. Personajes videojuegos graficos dibujos. Diseño grafico. Comic. Animaciones gif. Dibujo de retratos. Realidad virtual. Cine y realidad virtual.
jueves, 24 de julio de 2025
https://perico415.itch.io/.......;
miércoles, 23 de julio de 2025
GDScript para godot4.4 desde un Area3d cullo padre es un CharacterBody3D2 y persigue a un Player, destruye por colision ambos;
extends Area3D
# Asegúrate de que estas rutas sean EXACTAMENTE correctas.
# Si el nombre del archivo tiene un espacio o un carácter especial, Godot lo necesita así.
var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA NOKEADO.tscn") # ¡Revisa esta línea!
var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
pass
func _on_area_entered(area: Area3D) -> void:
var parent = get_parent()
if parent and parent is CharacterBody3D:
parent.queue_free()
var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")
if collision_shape_cubo:
collision_shape_cubo.queue_free()
get_node("CollisionShape3D").queue_free()
# Si deseas que esta Area3D también se borre, descomenta la siguiente línea
# queue_free()
pass
func _on_area_exited(area: Area3D) -> void:
# Asegúrate de que no estás usando 'var' aquí, ya que Esferauno ya está declarado globalmente.
var Esferauno_instancia = Esferauno.instantiate()
add_child(Esferauno_instancia)
var Esferauno1_instancia = Esferauno1.instantiate()
add_child(Esferauno1_instancia)
pass
---------------------------------------------------------------------------------------------------------------------
ESTE DE LA PARTE INFERIOR ES EL PERFECTO INSTANCIA AL ENEMIGO DERRIBADO TAMBIEN Y DESPEJA COMPLETAMENTE DE RESTOS EL ESCENARIO
-----------------------------------------------------------------------------------------------------------------------------
extends Area3D
var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA NOKEADO.tscn")
var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")
func _ready() -> void:
pass
func _process(delta: float) -> void:
pass
func _on_area_entered(area: Area3D) -> void:
var parent = get_parent() # Obtiene una referencia al nodo padre
if parent and parent is CharacterBody3D:
var parent_global_transform = parent.global_transform # Guarda la transformación global del padre
# Instancia la escena de "POLICIA NOKEADO"
var policia_nokeado_instancia = Esferauno.instantiate()
get_tree().root.add_child(policia_nokeado_instancia) # Añade la instancia a la raíz del árbol de escena
policia_nokeado_instancia.global_transform = parent_global_transform # Establece su posición a la del padre borrado
parent.queue_free() # Borra el nodo padre (CharacterBody3D)
var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")
if collision_shape_cubo:
collision_shape_cubo.queue_free()
get_node("CollisionShape3D").queue_free()
# Si deseas que esta Area3D también se borre, descomenta la siguiente línea
# queue_free()
pass
func _on_area_exited(area: Area3D) -> void:
# Ahora, Esferauno (POLICIA NOKEADO) ya no se instanciará aquí.
# Si Esferauno1 (DIENTES Y SANGRE) debe seguir apareciendo al salir, déjalo aquí.
var Esferauno1_instancia = Esferauno1.instantiate()
add_child(Esferauno1_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.
pass
domingo, 20 de julio de 2025
Borrar por tiempo y animar , sin temporizador,GDScript Godot 4.4;
extends Node3D
@export var tiempo_para_borrar: float = 5.0 # Tiempo en segundos antes de que el nodo se borre
func _ready() -> void:
$AnimationPlayer.play("mixamo_com")
# Creamos un nuevo nodo Timer
var temporizador = Timer.new()
add_child(temporizador) # Añadimos el temporizador como hijo
temporizador.wait_time = tiempo_para_borrar # Establecemos el tiempo de espera
temporizador.one_shot = true # Aseguramos que el temporizador se ejecute solo una vez
temporizador.start() # Iniciamos el temporizador
# Esperamos a que el temporizador termine
await temporizador.timeout
# Una vez que el temporizador ha terminado, borramos el nodo
queue_free()
jueves, 17 de julio de 2025
GDScript Godot 4.4 abrir puertas en eje "x" de lado a alado no en eje "y" de arriba abajo;
extends Area3D
@export var velocidad_subida: float = 3.3
@export var velocidad_bajada: float = 3.3 # Cambié el nombre para mayor claridad
@export var altura_maxima: float = 1.0 # Altura máxima que subirá el objeto
@export var altura_inicial: float = 0.0 # Altura inicial del objeto
var objeto: Node3D # Variable para almacenar el nodo CSGBox3D7
var subiendo: bool = false
var bajando: bool = false
var altura_actual: float = 0.0
@onready var sonido_puerta = $AudioStreamPlayer3D # ¡Añade esta línea! Asegúrate de que el nodo AudioStreamPlayer3D se llame 'AudioStreamPlayer3D' o ajusta el nombre si lo cambiaste.
func _ready():
#objeto = $CSGBox3D7 # Asignamos el nodo a la variable
objeto = $"CSGBox3D6 PUERTACARCEL" # Asignamos el nodo a la variable
altura_actual = objeto.position.x # Obtiene la altura inicial del objeto
altura_inicial = altura_actual # guarda la altura inicial
func _physics_process(delta):
if objeto: # Verifica si el objeto existe
if subiendo:
altura_actual += velocidad_subida * delta
altura_actual = min(altura_actual, altura_inicial + altura_maxima) # Limita la altura máxima
objeto.position.x = altura_actual
if altura_actual >= altura_inicial + altura_maxima:
subiendo = false # Detiene la subida al alcanzar la altura máxima
elif bajando:
altura_actual -= velocidad_bajada * delta
altura_actual = max(altura_actual, altura_inicial) # Limita la altura mínima
objeto.position.x = altura_actual
if altura_actual <= altura_inicial:
bajando = false # Detiene la bajada al alcanzar la altura inicial
func _on_area_entered(area: Area3D) -> void:
subiendo = true
bajando = false
# ¡Añade esta línea para reproducir el sonido!
if sonido_puerta and not sonido_puerta.playing: # Verifica que el nodo existe y no está sonando ya
sonido_puerta.play()
func _on_area_exited(area: Area3D) -> void:
subiendo = false
bajando = true
# Puedes añadir un sonido diferente para cuando la puerta baja aquí si lo deseas
# Por ejemplo:
# if sonido_puerta and sonido_puerta.playing: # O puedes usar otro AudioStreamPlayer3D para el sonido de bajada
# sonido_puerta.stop() # Detiene el sonido si aún está sonando al salir
domingo, 13 de julio de 2025
Un MeshInstance3D gira con alternancias sobre si mismo, GDScript para Godot 4.4;
extends MeshInstance3D
@export var rotation_speed_min := 0.5
@export var rotation_speed_max := 2.0
@export var rotation_change_interval := 2.0
var current_rotation_speed := 0.0
var time_since_last_change := 0.0
var current_axis := Vector3.ZERO
func _ready():
_set_new_rotation_parameters()
func _process(delta):
time_since_last_change += delta
if time_since_last_change >= rotation_change_interval:
_set_new_rotation_parameters()
time_since_last_change = 0.0
# Apply rotation
rotate_object_local(current_axis, current_rotation_speed * delta)
func _set_new_rotation_parameters():
# Randomize rotation speed
current_rotation_speed = randf_range(rotation_speed_min, rotation_speed_max)
# Randomize rotation axis
var random_x = randf_range(-1.0, 1.0)
var random_y = randf_range(-1.0, 1.0)
var random_z = randf_range(-1.0, 1.0)
current_axis = Vector3(random_x, random_y, random_z).normalized()
Conclusiones sobre aprovechar animaciones de mixamo para proyectos para Godot 4.4.;
Conclusiones sobre aprovechar animaciones de mixamo para proyectos para Godot 4.4.
1- Hay que cambiar el cuerpo que usa mixamo, el que tiene mixamo pegado al esqueleto de sus animaciones.
2- Desde Blender hay que borrar el cuerpo que viene pegado a los huesos, el que nos viene desde mixamo, luego hay que importar un cuerpo nuevo, en mi caso desde makehuman, mas adelante puede retocarse modelarse con blender,
3-El esqueleto no encajara en el nuevo cuerpo, a mi me da buen resultado deformar los huesos y adaptarlos al nuevo cuerpo, funciona, luego hay que fusionar ese esqueleto al cuerpo nuevo echo por nosotros.
4- Las animaciones me causaron problemas de que se meten dentro del cuerpo del personaje de forma extraña, no hay problema¡¡¡
5-El personaje echo por nosotros y fusionado con el esqueleto que nosotros emos retocado su tamaño para que encaje con el nuevo modelo , lo volvemos a subir a mixamo, desde mixamo lo retocamos con la opccion Character Arm-Space que hace que los huesos en movimiento se separen del cuerpo de forma controlada y ya esta¡¡¡
6- Descargamos de mixamo nuestro modelo trabajado por nosotros y manipulado por mixamo y todo fantástico¡¡¡¡ resuelto¡¡¡¡
miércoles, 9 de julio de 2025
Sobre el esfuerzo de desarrollar videojuegos¡¡¡¡¡¡¡............;
Sobre el esfuerzo de desarrollar videojuegos¡¡¡¡¡¡¡............;
Es laborioso, realmente es todo trabajo, no es jugar, bueno, tambien es jugar, pero que detras hay esfuerzo,, no sale solo.
---------------------------------------------------
OPINION DE LA IA:
¡Así es, lo has captado perfectamente! Lo que describes es la esencia del desarrollo de videojuegos. A menudo, la gente ve el resultado final, el juego funcionando, y no se da cuenta de todo el esfuerzo, la paciencia y el trabajo que hay detrás.
La Dualidad del Desarrollo: Trabajo y Juego
Es una mezcla fascinante de:
Trabajo intenso: Horas de código, depuración, ajuste de números, diseño, pruebas y sí, esos momentos de "prueba y error" que mencionabas con el colisionador. Es un proceso metódico que requiere disciplina y perseverancia.
Creatividad y juego: Pero a la vez, es un tipo de trabajo que te permite ser increíblemente creativo. Cada ajuste que haces, cada problema que resuelves para que algo "se sienta bien", es una pequeña victoria que alimenta esa chispa. Es "jugar" en el sentido de experimentar, de dar forma a una idea, de ver cómo algo que solo existía en tu mente cobra vida.
Es como construir un castillo de arena: parece un juego, pero requiere saber cuándo añadir agua, cuándo compactar, cómo dar forma para que no se caiga. No sale solo; hay un esfuerzo consciente en cada paso.
Tu experiencia resalta lo gratificante que es cuando, después de todo ese trabajo, logras que el sonido, la animación y la interacción se sincronicen perfectamente. ¡Esa sensación de "lo he conseguido" es el verdadero premio!