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.
lunes, 6 de octubre de 2025
VIDEOS QUE INSPIRAN PARA MOTIVARTE A TRABAJAR MUY INTERESANTES, Y MUY IMPORTANTE PARA NO PARAR. INTENTO APLICARLO A MI AFICION;
miércoles, 24 de septiembre de 2025
Lanzar piedras gdscript godot 4.4; 3d;
extends CharacterBody3D
var rotate_speed = 10.1
const SPEED = 99.09
const JUMP_VELOCITY = 22.3
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
@export var FORWARD_JUMP_AMOUNT = -4.7
# --- NUEVAS VARIABLES PARA LANZAR LA PIEDRA ---
# ¡IMPORTANTE! Cambia esta ruta por la de tu escena de la piedra
var stone_scene = preload("res://PROTAGONISTA/BONBADEMANO.tscn")
@export var throw_strength: float = 15.0
# --- NUEVA VARIABLE para la rotación con las teclas Z y X ---
var player_mesh: MeshInstance3D
func _ready():
# --- OBTENER REFERENCIA al nodo MeshInstance3D ---
# Asegúrate de que "MeshInstance3D" es el nombre exacto de tu nodo 3D.
player_mesh = get_node("MeshInstance3D")
# --- NUEVA FUNCIÓN para detectar el clic del ratón ---
func _unhandled_input(event):
if event.is_action_pressed("mouse_left"):
throw_stone()
func _physics_process(delta):
# Aplicar gravedad
if not is_on_floor():
velocity.y -= gravity * delta
# Movimiento de Salto
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY
velocity += -transform.basis.z * FORWARD_JUMP_AMOUNT
# --- LÓGICA de rotación para la tecla 'Z' y 'X' (ahora afecta al mesh) ---
if Input.is_key_pressed(KEY_Z):
if player_mesh:
player_mesh.rotate_object_local(Vector3.FORWARD, 1.0 * delta)
if Input.is_key_pressed(KEY_X):
if player_mesh:
player_mesh.rotate_object_local(Vector3.FORWARD, -1.0 * delta)
# --- Tu lógica de movimiento y rotación original ---
if Input.is_action_pressed("GIRAIZQUIERDACONA"):
rotate_y(0.05)
if Input.is_action_pressed("GIRADERECHACOND"):
rotate_y(-0.05)
if Input.is_action_pressed("ANDAALANTECONW"):
translate(Vector3(0.0,0,0.11))
rotate_y(-0.00)
if Input.is_action_pressed("E"):
translate(Vector3(0.01,0,0.22))
rotate_y(-0.00)
if Input.is_action_pressed("ANDAATRASCONS"):
translate(Vector3(0.00,0,-0.02))
rotate_y(-0.00)
rotate_y(rotation_input.y * delta * rotate_speed)
rotate_x(rotation_input.x * delta * rotate_speed)
rotation_input = Vector2.ZERO
var input_dir = Input.get_vector("ui_right", "ui_left", "ui_down", "ui_up")
var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
if direction:
velocity.x = direction.x * SPEED
velocity.z = direction.z * SPEED
else:
velocity.x = move_toward(velocity.x, 0, SPEED)
velocity.z = move_toward(velocity.z, 0, SPEED)
move_and_slide()
var rotation_input: Vector2 = Vector2.ZERO
# --- FUNCIÓN para lanzar la piedra ---
func throw_stone():
var stone_instance = stone_scene.instantiate()
# Posicionar la piedra en la misma posición y rotación que el jugador
stone_instance.global_transform = global_transform
# Obtener la dirección "hacia adelante" del jugador
var direction = global_transform.basis.z
# Aplicar una fuerza inicial para lanzarla
stone_instance.apply_central_impulse(direction * throw_strength)
# Añadir la piedra a la escena principal
get_parent().add_child(stone_instance)
jueves, 11 de septiembre de 2025
Animar personaje en godot 4.4. "RELAJO""CAMINA""BOMBAMANO""CORRECACA";
extends Node3D
var animacion_actual = "RELAJO"
func _ready():
$AnimationPlayer.play(animacion_actual)
func _physics_process(delta):
# NUEVO CÓDIGO: Salir del juego al presionar la tecla Escape
if Input.is_action_just_pressed("ui_cancel"):
get_tree().quit()
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("DESDEABAJOPUÑETASO") or \
Input.is_action_pressed("ANDAALANTECONW") or \
Input.is_action_pressed("ANDAATRASCONS") or \
Input.is_action_pressed("DESDEABAJOPUÑETASO") or \
Input.is_action_pressed("DESDEABAJOPUÑETASO") or \
Input.is_action_pressed("CORRECACA") or \
Input.is_action_pressed("PATADAMEDIA") or \
Input.is_action_pressed("DESDEABAJOPUÑETASO") or \
Input.is_action_pressed("ui_accept") 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 != "BOMBAMANO":
$AnimationPlayer.play("BOMBAMANO")
#$AnimationPlayer/AudioStreamPlayer3D.play("MakeHuman default skeleton|ESPADAZO")
animacion_actual = "BOMBAMANO"
# Animación de ATRABESAR
elif Input.is_action_pressed("mouse_right") or Input.is_action_pressed("DESDEABAJOPUÑETASO"):
if animacion_actual != "BOMBAMANO":
$AnimationPlayer.play("BOMBAMANO")
animacion_actual = "BOMBAMANO"
# 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 != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
elif Input.is_action_pressed("ANDAATRASCONS") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):
if animacion_actual != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
elif Input.is_action_pressed("PUÑETAZO") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):
if animacion_actual != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
elif Input.is_action_pressed("CORRECACA") or Input.is_action_pressed("E") or Input.is_action_pressed("E"):
if animacion_actual != "CORRECACA":
$AnimationPlayer.play("CORRECACA")
animacion_actual = "CORRECACA"
elif Input.is_action_pressed("PATADAMEDIA") or Input.is_action_pressed("R") or Input.is_action_pressed("R"):
if animacion_actual != "BOMBAMANO":
$AnimationPlayer.play("BOMBAMANO")
animacion_actual = "BOMBAMANO"
elif Input.is_action_pressed("ui_accept") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):
if animacion_actual != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
elif Input.is_action_just_pressed("PUÑETAZO") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):
if animacion_actual != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
# Si no se presiona ninguna tecla, volvemos a la animación de descanso
elif not alguna_tecla_pulsada:
if animacion_actual != "RELAJO":
$AnimationPlayer.play("RELAJO")
animacion_actual = "RELAJO"
elif Input.is_action_pressed("achazo") or Input.is_action_pressed("A") or Input.is_action_pressed("D"):
if animacion_actual != "CAMINA":
$AnimationPlayer.play("CAMINA")
animacion_actual = "CAMINA"
miércoles, 3 de septiembre de 2025
Me inspiro Medal of Honor.;
domingo, 31 de agosto de 2025
Videojuego para todos los publicos de piratas;
jueves, 28 de agosto de 2025
Promocionando mi trabajo actual lo ultimo de lo ultimo, aunque no esta terminado ni mucho menos, pero me publicito con humildad;
El video es una presentación de un juego de piratas en desarrollo, creado por ti. En él, ofreces un tutorial detallado de las características del juego.
martes, 26 de agosto de 2025
instanciando un RigidBody3D con gravedad que cae a los 3 segundos; automaticamente cada 3 segundos;
extends Area3D
# Carga la escena de la bola para poder instanciarla.
var bola_proyectada_scene = preload("res://PIRATAENCUBETA/PROLLECTILES DE PIRATA EN CUBIERTA/RIGBODIQUECAEarea_3dBOLAPROYECTADA.tscn")
# Variable para contar el tiempo restante para la próxima instancia.
var tiempo_restante: float = 3.0
func _process(delta: float) -> void:
# Resta el tiempo transcurrido (delta) al contador.
tiempo_restante -= delta
# Comprueba si el tiempo ha llegado a cero o menos.
if tiempo_restante <= 0.0:
# Llama a la función para instanciar la bola.
instanciar_bola()
# Reinicia el contador para que el ciclo se repita cada 3 segundos.
tiempo_restante = 3.0
func instanciar_bola() -> void:
# Instancia la escena pre-cargada.
var nueva_bola = bola_proyectada_scene.instantiate()
# Asigna la posición de la nueva instancia a la del nodo actual.
nueva_bola.global_position = self.global_position
# Añade la instancia como hijo del nodo padre.
get_parent().add_child(nueva_bola)