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.
viernes, 25 de julio de 2025
Videojuego cañones verano 2017;
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¡¡¡¡