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.........