domingo, 23 de noviembre de 2025

Godot 4.5 estudiando nuevo proyecto-2-parte;

 

Estoy con nuevo proyecto realizándolo con Godot 4.5, este es muy ambicioso porque quiero publicar mi primer juego en Steam, y no lo voy a realizar en 2 meses, creo me atreveré a publicarlo de aquí 6 meses a 1 año, e comprado un mouse mas preciso para trabajar el juego, de estos de Gamer y bueno se nota la diferencia, mas precisión y mas seguridad manejando con el.


En el juego utilizo muchísimo la cámara, permitiendo infinidad de ángulos y de distancias, el jugador tendrá todas sus preferencias cubiertas en ese aspecto.


En este video estoy empezando a trabajar el juego y probando el mouse.


El argumento trata sobre un robo en un museo.


Las animaciones las descargo y las combino lo mejor que se alludandome de la IA y sus gdscripts para hacer funcionar al personaje.


La ambientación sera toda de oscuridad y de misterio, una iluminación estilo series de televisión CSI, al menos en eso me inspiro.


Iré publicando avances en yutube y en mi blog, ahora no tengo ninguna prisa, antes hacia un juego cada mes o dos meses y los publicaba en Itch.io, con temas de erotismo, porque algún dólar caía por ventas y hacia ilusión ganar algo, pero con la censura actual eso se a echo imposible, así que voy a ir en plan de autentico profesional, y voy hacer un juego que publicare en Steam y del cual pienso recuperar los 100$ que cuesta publicar alli mas las ganancias, otros 100$ me atrevo a asegurar que conseguire ganar.


Y estoy completamente seguro que lo voy a conseguir, jamas podre vivir de esto, pero algun pellizco, o trozo del pastel si que lo boy a sacar.


Es mas el goze de tener una ilusion, una aficion, algo que me llena y me desconecta de la monotonia de mi abitual trabajo del que si me gano el pan.

domingo, 16 de noviembre de 2025

GDSCRIPT SOLO DISPARA DE 1 EN 1 AL EMPEZAR A PRESIONAR TECLA; GODOT 4.5;

 extends Area3D


var Bullet = preload("res://PROTAGONISTA/area_3dPROLLECTIL RIFLE.tscn")


# --- Variables de control para el cooldown ---

var right_mouse_fire_cooldown: float = 0.4

var can_fire_right_mouse: bool = true


# --- Nodos Timer ---

var right_mouse_timer: Timer


# --- Referencia al nodo del modelo 3D (para la rotación) ---

var player_mesh: MeshInstance3D



func _ready() -> void:

# --- Inicialización del temporizador para el Botón Derecho ---

right_mouse_timer = Timer.new()

add_child(right_mouse_timer)

right_mouse_timer.wait_time = right_mouse_fire_cooldown

right_mouse_timer.one_shot = true

# Al terminar el tiempo, volvemos a permitir el disparo

right_mouse_timer.timeout.connect(func(): can_fire_right_mouse = true)


# --- OBTENER REFERENCIA al nodo MeshInstance3D ---

player_mesh = get_node("MeshInstance3D")



func _input(event: InputEvent) -> void:

if event is InputEventMouseButton:

# 🎯 CAMBIO CLAVE: Disparo al EMPEZAR a presionar 🔫

# Verificamos si es el botón derecho Y SI ESTÁ presionado (event.is_pressed())

if event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed(): 

if can_fire_right_mouse:

can_fire_right_mouse = false

instantiate_bullet()

right_mouse_timer.start()


# NOTA: La liberación del botón ahora no hace nada porque no hay código que la compruebe.



func _process(delta: float) -> void:

# --- LÓGICA de rotación (Se mantiene aquí) ---

if player_mesh:

if Input.is_key_pressed(KEY_Z):

player_mesh.rotate_object_local(Vector3.FORWARD, 1.0 * delta)

if Input.is_key_pressed(KEY_X):

player_mesh.rotate_object_local(Vector3.FORWARD, -1.0 * delta)



# --- Función unificada para instanciar la bala ---

func instantiate_bullet() -> void:

var bullet = Bullet.instantiate()

add_child(bullet)

GDScript para proyectil continuo;; Godot 4.5;

 extends Area3D


var speed: float = 31.0 # Velocidad de la bala (Unidades por segundo)

var tiempo_transcurrido: float = 0.0 # Tiempo en segundos


# El tiempo de vida de la bala es de 80.8 segundos (mucho, pero lo mantenemos por tu configuración)

const LIFESPAN: float = 80.8 



func _ready() -> void:

# La bala ya debe estar orientada en la dirección de disparo

pass


func _process(delta: float) -> void:

# 1. ACTUALIZAR EL TIEMPO

tiempo_transcurrido += delta


# 2. MOVER EL PROYECTIL HACIA ADELANTE (Movimiento Recto y Limpio)

# Usamos translate() para mover el proyectil en su eje local Z (hacia adelante).

# Como no hay ninguna rotación aplicada, mantendrá el rumbo recto.

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


# 3. CONDICIÓN DE DESTRUCCIÓN

if tiempo_transcurrido >= LIFESPAN:

queue_free()


# --- PARTES ELIMINADAS ---

# Se ha eliminado todo el código de 'desired_sweep_angle', 'sin', y 'rotation = current_rotation'

# que causaba el movimiento de barrido lateral.

PASANDO PERSONAJE DE BLENDER 4.4.3. A GODOT 4.5.;


 

AGREGANDO LINTERNA A PERSONAJE EN BLENDER 4.4.3.;

Control + "p"

 

AÑADIR OBJETO A PERSONAJE CON BLENDER 4.4.3. UNA PISTOLA;;


 Control + "p"