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.
sábado, 31 de octubre de 2026
A wolf in the bathroom:
viernes, 30 de octubre de 2026
Pagame un cafe cuando disfrutes de mi juego;
miércoles, 28 de octubre de 2026
Un agradecimiento a mi comunidad de visitantes al blog; 28-10-2026;
martes, 27 de octubre de 2026
Maravilloso GDScript para manejar una camara fija en Godot 4.7 ; en 3d;
extends Camera3D
@export_group("Movimiento y Cámara")
@export var speed: float = 5.0
@export var mouse_sensitivity: float = 0.003
@export_group("Zoom / Enfoque (Rueda del Ratón)")
@export var zoom_speed: float = 3.0
@export var min_fov: float = 10.0 # Enfoque máximo (teleobjetivo)
@export var max_fov: float = 120.0 # Enfoque mínimo (gran angular)
@export_group("Límites de Desplazamiento (Metros)")
@export var limit_forward: float = 10.0 # Máximo W (Adelante)
@export var limit_backward: float = 5.0 # Máximo S (Atrás)
@export var limit_left: float = 8.0 # Máximo A (Izquierda)
@export var limit_right: float = 8.0 # Máximo D (Derecha)
var rotation_x: float = 0.0
var start_position: Vector3
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
start_position = global_position
func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_cancel") or (event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE):
get_tree().quit()
# Control de la vista con el movimiento del ratón
if event is InputEventMouseMotion and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
rotate_y(-event.relative.x * mouse_sensitivity)
rotation_x -= event.relative.y * mouse_sensitivity
rotation_x = clamp(rotation_x, deg_to_rad(-89.0), deg_to_rad(89.0))
rotation.x = rotation_x
# Control del zoom / enfoque con la rueda del ratón
if event is InputEventMouseButton and Input.mouse_mode == Input.MOUSE_MODE_CAPTURED:
if event.pressed:
if event.button_index == MOUSE_BUTTON_WHEEL_UP:
fov = clamp(fov - zoom_speed, min_fov, max_fov)
elif event.button_index == MOUSE_BUTTON_WHEEL_DOWN:
fov = clamp(fov + zoom_speed, min_fov, max_fov)
func _process(delta: float) -> void:
var input_dir := Vector3.ZERO
if Input.is_key_pressed(KEY_W):
input_dir.z -= 1 # W: Adelante
if Input.is_key_pressed(KEY_S):
input_dir.z += 1 # S: Atrás
if Input.is_key_pressed(KEY_A):
input_dir.x -= 1 # A: Izquierda
if Input.is_key_pressed(KEY_D):
input_dir.x += 1 # D: Derecha
if input_dir != Vector3.ZERO:
input_dir = input_dir.normalized()
# Movemos en el plano horizontal para no volar al mirar arriba/abajo
var forward := -global_transform.basis.z
forward.y = 0
forward = forward.normalized()
var right := global_transform.basis.x
right.y = 0
right = right.normalized()
# Calculamos el intento de movimiento
var movement := (right * input_dir.x + forward * -input_dir.z) * speed * delta
var target_position := global_position + movement
# Medimos la distancia acumulada desde el origen
var offset := target_position - start_position
# Aplicamos los 4 límites independientes (W, S, A, D)
offset.x = clamp(offset.x, -limit_left, limit_right)
offset.z = clamp(offset.z, -limit_forward, limit_backward)
# Asignamos la posición corregida manteniendo la altura fija (Y)
global_position = Vector3(start_position.x + offset.x, start_position.y, start_position.z + offset.z)
-------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------
Explicacion, caracteristicas: Enfoque desde rueda del mouse, giros de 360 grador en eje -y- limitaciones de avance por escenario , con teclas -w-a-s-d-.....todo calibrado desde el inspector.
domingo, 25 de octubre de 2026
Me estreno en tic toc;
martes, 20 de octubre de 2026
GDScript para Godot 3d 4.7; abre una puerta y emite su sonido;
extends Area3D
@export var velocidad: float = 2.0
@export var distancia_x: float = 22222.5
# Rutas exactas basadas en tu árbol de nodos
@onready var mesh_instance: MeshInstance3D = $CollisionShape3D/MeshInstance3D
@onready var audio_player: AudioStreamPlayer3D = $CollisionShape3D/MeshInstance3D/AudioStreamPlayer3D
var posicion_inicial_x: float = 0.0
var moviendo: bool = false
func _ready() -> void:
if mesh_instance:
posicion_inicial_x = mesh_instance.position.x
area_entered.connect(_on_area_entered)
func _process(delta: float) -> void:
if not mesh_instance:
return
var objetivo_x = posicion_inicial_x + distancia_x if moviendo else posicion_inicial_x
mesh_instance.position.x = move_toward(mesh_instance.position.x, objetivo_x, velocidad * delta)
func _on_area_entered(area: Area3D) -> void:
if not moviendo:
moviendo = true
# Reproducimos el sonido 3D de forma segura
if audio_player and audio_player.stream and not audio_player.playing:
audio_player.play()






