domingo, 15 de septiembre de 2024

Borrar particulas alos pocos segundos para no saturar la memoria en Godot 4.3;

 extends CPUParticles3D

var tiempo_transcurrido = 0.0


# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

rotate_y(0.8)

tiempo_transcurrido += delta


if tiempo_transcurrido >= 11.0:

queue_free()  # Elimina el nodo de la escena

jueves, 12 de septiembre de 2024

DOS SCRIPTS GDSCRIPT PARA INSTANCIAR UNA CAMARA EN GODOT 4.3, Y QUE ESTA SE MUEVA Y AGA UN ENFOQUE;

 extends Camera3D


var tiempo_transcurrido = 0.0


# Llamado cuando el nodo entra en el árbol de escena por primera vez.

func _ready() -> void:

pass # Replace with function body.


# Llamado cada cuadro. 'delta' es el tiempo transcurrido desde el cuadro anterior.

func _process(delta: float) -> void:

rotate_x(0.00005)

tiempo_transcurrido += delta


if tiempo_transcurrido >= 16.0:

queue_free()  # Elimina el nodo de la escena


--------------------------------------------------------------------------------------------------------------------

--------------------------------------------------------------------------------------------------------------------

Explicacion: El script superior solo es para una camara, tiene un temporizador para que se borre transcurridos unos segundos y a la vez hace un leve giro rotatorio en el eje x...................


El script inferior , instancia esa camara, entre otras cosas, tambien instancia una puerta rota en 2 partes , mi idea con Godot es jugar con enfoques de camara porque me gusta mucho el cine y con Godot me gustan los resultados, en el inspector la camara tiene activada la casilla  Current, eso indica prioridad, por que estamos casi todo el tiempo trabajando con la camara que lleva el player detras como hijo, esta no esta activada en Current, pero como es la unica es la que sale constantemente, ahora bien al atravesar cierta puerta, ago que se instancie esta camara con el Current activado que significa prioridad, y entonces ago un cambio de enfoque momentaneo  que enfoca un personaje concreto del juego ,ya que dicha camara al pasar unos segundos se destrulle sola, y retorna la vista del juego a la camara que lleva el player como hijo........y se enfoca  de nuevo el juego como al comienzo, esta operacion la puedo repetir y emplear infinidad de veces, cada vez estoy mas entusiasmado con Godot 4.3

--------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------


extends Area3D

var Esferauno = preload("res://PUERTAS Y PUERTAS REVENTADAS/PUERTAROTA.tscn")

var Esferauno2 = preload("res://PUERTAS Y PUERTAS REVENTADAS/PUERTAROTA2.tscn")

var Esferauno3 = preload("res://PERSONAJES/LOCA CORDEROS/camera_3d_2enfocabocabozal.tscn")


# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

pass



func _on_area_entered(area):


var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")



get_node("RigidBody3D PUERTA EMPUJO--INTENTARE BISAGRA").queue_free()


#get_node("RigidBody3D PUERTA EMPUJO--INTENTARE BISAGRA").queue_free()


get_node("CollisionShape3D2").queue_free()


pass # Replace with function body.



func _on_area_exited(area):


var Esferauno = Esferauno.instantiate()


add_child(Esferauno)


var Esferauno2 = Esferauno2.instantiate()


add_child(Esferauno2)



var Esferauno3 = Esferauno3.instantiate()


add_child(Esferauno3)


pass # Replace with function body.


PRONTO A LA VENTA EN perico415.itch.io;JUEGO DE TERROR EN DESARROLLO CON GODOT 4.3;


 

miércoles, 11 de septiembre de 2024

Ejemplo de borrar en GDScript al entrar en un Area3d;

 extends Area3D


# Referencia al objeto que queremos borrar

#onready var objeto_a_borrar = $"Almoadasparet-2-SANGINOLUENTA2"


func _ready():

pass





func _on_area_entered(area: Area3D) -> void:

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet cara principal2".queue_free()

#$"Almoadasparet-2-SANGINOLUENTA2".rotate_z(22)

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet8 PADREPARETIZQUIERDA2".queue_free()

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet7 PADRE LA DERECHA2".queue_free()

$"Almoadasparet19---REY2".queue_free()

$CollisionShape3DJAJA.queue_free()


pass # Replace with function body.





------------------------------------------------------------------------------------------------------------------------

------------------------------------------------ampliando elemento que se borrara-----------------------------------------------------------------------------------------------------------------------------------------------------

extends Area3D


# Referencia al objeto que queremos borrar

#onready var objeto_a_borrar = $"Almoadasparet-2-SANGINOLUENTA2"


func _ready():

pass





func _on_area_entered(area: Area3D) -> void:

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet cara principal2".queue_free()

#$"Almoadasparet-2-SANGINOLUENTA2".rotate_z(22)

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet8 PADREPARETIZQUIERDA2".queue_free()

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet7 PADRE LA DERECHA2".queue_free()

$"Almoadasparet19---REY2".queue_free()

$"../StaticBody3D8 ALMOADAS ABITACION/Almoadasparet25 PADRE SUELO ALMOADA2".queue_free()

$CollisionShape3DJAJA.queue_free()


pass # Replace with function body.



lunes, 9 de septiembre de 2024

Estudio de script GDScript; contiene explicacion del tema añadir objetos a huesos especificos en Godot 4.3;

 extends Node3D


func _ready() -> void:

# Reproducir la animación

$AnimationPlayer.play("MakeHuman default skeleton|CHIFLADA")


# Nombres de los nodos (ajústalos según tu escena)

var mano_name = "MakeHuman default skeleton/Skeleton3D/clavicle.L"

var objeto_name = "MakeHuman default skeleton/Skeleton3D/clavicle.L/StaticBody3Dcuerda"


# Obtener los nodos

var mano = get_node(mano_name)

var objeto = get_node(objeto_name)


# Verificar si los nodos existen y agregar el objeto como hijo de la mano

if mano and objeto:

mano.add_child(objeto)

# Ajustar la posición del objeto (ajusta el valor según tus necesidades)

objeto.global_transform.origin = mano.global_transform.origin + Vector3(0, 0.1, 0)

else:

print("Uno o ambos nodos no se encontraron. Verifica los nombres y la jerarquía de la escena.")


func _process(delta: float) -> void:

pass



-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Explicacion: Este script en GDScript esta correctamente escrito segun Godot 4.3, pero no consigo que un objeto se pege al hueso de una mano y siga su movimiento , un palo o un arma por ejemplo, no se si es porque Godot 4.3 aun no soporta poder hacer eso o es por desconocimiento mio, tampoco se encontrar informacion por internet del tema, en fin tengo otros medios para hacerlo pero son a costa de mas trabajo y mas horas de desarrollo de cualquier idea, no me queda otra que modelar en el propio cuerpo de un player, con blender un palo un arma o un escudo desde el propio player manipulando y modelando la maya,,,,,se que puedo hacerlo pero claro cuesta mas horas y mas trabajo.....en fin de momento me boy a centrar en mis conocimientos para mi juego actual, si e de aprender y desarrollar las dos cosas a la vez ire aun mas lento, y mi idea es publicar un juego al mes o cada dos meses en Itch,io un juego completo y que al menos yame la atencion......


viernes, 6 de septiembre de 2024

Mober un Label por script GDScript;

 extends Label


func _ready() -> void:

# Establece la posición inicial del Label

position.y = 0


func _process(delta: float) -> void:

# Mueve el Label hacia abajo a una velocidad constante

position.y += 0.06

martes, 3 de septiembre de 2024

GDScript animar un Sprite3d; se arrastra el Sprite3D al script y se escribe a continuacion .play();

 extends AnimatedSprite3D



# Called when the node enters the scene tree for the first time.

func _ready() -> void:

$".".play()

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

pass

domingo, 1 de septiembre de 2024

extends CharacterBody3D script GDScript para mover personaje 3d con Godot4.3;

 extends CharacterBody3D


var rotate_speed = 10.1  # Rotation speed




const SPEED = 0.2  # Movement speed




const JUMP_VELOCITY = 3.5  # Jump velocity


var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")


func _ready():


# Replace with function body

pass


func _physics_process(delta):

translate(Vector3(0,0,-0.005))# PARA UNA CONSTANCIA DE MOVIMIENTO CONTINUO

if not is_on_floor():

velocity.y -= gravity * delta  # Apply gravity


if Input.is_action_just_pressed("ui_accept") and is_on_floor():

velocity.y = JUMP_VELOCITY  # Jump


#var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")  # Get input direction

var input_dir = Input.get_vector("ui_left", "ui_right", "andaradelante", "detenerse")  #ESTE FUNCIONABA ESTE FUNCIONABA





var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()


if direction:

velocity.x = direction.x * SPEED  # Move in X direction

velocity.z = direction.z * SPEED  # Move in Z direction


else:

velocity.x = move_toward(velocity.x, 0, SPEED)  # Stop horizontal movement

velocity.z = move_toward(velocity.z, 0, SPEED)  # Stop vertical movement


move_and_slide()  # Apply movement and collisions


var movimiento_vector = Vector3.ZERO  # Initialize movement vector



if Input.is_action_pressed("move_left"):

rotate_y(0.05)  # Rotate on Z axis (positive for left)

if Input.is_action_pressed("move_right"):

rotate_y(-0.05)  # Rotate on Z axis (negative for right)

#translate(Vector3(0.05,0,0))

if Input.is_action_pressed("detenerse"):

translate(Vector3(0.0,0.00,0.005))

rotate_y(-0.00)

if Input.is_action_pressed("andaradelante"):

translate(Vector3(0.0,0.00,-0.005))

rotate_y(-0.00)




------------------------------------------------------------------------------------------------------------------

Explicacion:  adelante hacia atras giro sobre simismo izquierda y derecha y salta.

GDScript rota un Label presionando tecla escape; y lo rota de nuevo al presionar otra vez;

 extends Label



# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass # Replace with function body.



# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

if Input.is_action_just_pressed("escapedesalir"):

rotation_degrees += 180



----------------------------------------------------------------------------------------------------------------------- Explicacion:  muy util para el inicio de un juego, para mostrar y quitar textos explicativos, seguro que se puede combinar con imagenes tambien.........