miércoles, 16 de abril de 2025

GDScript para Godot 4.4 hace animaciones al presionar teclas , traslada al personaje por si solo en uno de sus ejes y a los 20 segundos lo borra;

 extends Node3D


var animacion_actual = "Default simplified|GRITANDO"

var animacion_idle = "Default simplified|GRITANDO" # ANIMACION DE ESTAR QUIETO

var velocidad_traslacion = 90.5

var tiempo_vida = 20.0

var tiempo_transcurrido: float = 0.0


func _ready():

$AnimationPlayer.play(animacion_actual)

pass


func _physics_process(delta):

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

tiempo_transcurrido += delta

if tiempo_transcurrido >= tiempo_vida:

queue_free() # Borra el nodo de forma segura

var alguna_tecla_pulsada = false


if Input.is_action_pressed("ui_accept") or \

   Input.is_action_pressed("mouse_left") or \

   Input.is_action_pressed("luzcasco") or \

   Input.is_action_pressed("ANDAATRASCONS") or \

   Input.is_action_pressed("ANDAALANTECONW") or \

   Input.is_action_pressed("ANDAALNTECONE") or \

   Input.is_action_pressed("GIRADERECHACOND") or \

   Input.is_action_pressed("A") or \

   Input.is_action_pressed("D"):

alguna_tecla_pulsada = true


if alguna_tecla_pulsada:

# Agacharse (al presionar "luzcasco")

if Input.is_action_just_pressed("luzcasco"):

if animacion_actual != "Default simplified|ANDAR":

$AnimationPlayer.play("Default simplified|ANDAR")

animacion_actual = "Default simplified|ANDAR"


# Volver a correr (al soltar "mouse_left")

if Input.is_action_just_released("mouse_left"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Andar hacia atrás (al presionar "ANDAATRASCONS")

if Input.is_action_just_pressed("ANDAATRASCONS"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"





# Volver a andar normal (al presionar "ANDAALANTECONW")

if Input.is_action_just_pressed("ANDAALANTECONW"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"




# Volver a andar normal (al soltar "ANDAALANTECONW")

if Input.is_action_just_released("ANDAALANTECONW"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"


# Otra acción para correr (al presionar "ANDAALNTECONE")

if Input.is_action_just_pressed("ANDAALNTECONE"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Volver a gritar (al soltar "GIRADERECHACOND")

if Input.is_action_just_released("GIRADERECHACOND"):

if animacion_actual != "Default simplified|GRITANDO":

$AnimationPlayer.play("Default simplified|GRITANDO")

animacion_actual = "Default simplified|GRITANDO"


# Correr con "A" (al presionar)

if Input.is_action_just_pressed("A"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Gritar con "A" (al soltar)

if Input.is_action_just_released("A"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"


# Correr con "D" (al presionar)

if Input.is_action_just_pressed("D"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Correr con "D" (al soltar) - REVISA ESTA LÓGICA

if Input.is_action_just_released("D"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"

else:

# Si no se presiona ninguna tecla, reproduce la animación de estar quieto

if animacion_actual != animacion_idle:

$AnimationPlayer.play(animacion_idle)

animacion_actual = animacion_idle


lunes, 14 de abril de 2025

Extends MeshInstance2D lo mueve mediante GDScript en Godot 4.4;

 extends MeshInstance2D


@export var velocidad_desplazamiento = 50.0 # Píxeles por segundo

@export var distancia_total = 1300.0

@export var tiempo_vida = 235.0


var tiempo_transcurrido = 0.0

var distancia_recorrida = 0.0


func _ready():

var viewport_rect = get_viewport_rect()

position = Vector2(viewport_rect.size.x / 2, -50) # Posición inicial arriba


func _process(delta):

position.y += velocidad_desplazamiento * delta

distancia_recorrida += velocidad_desplazamiento * delta

tiempo_transcurrido += delta


if distancia_recorrida >= distancia_total:

queue_free()

return


if tiempo_transcurrido >= tiempo_vida:

queue_free()


domingo, 13 de abril de 2025

Resumen de lo aprendido ultimamente en Godot 4.4;

 

Resumen de lo aprendido ultimamente en Godot 4.4:

-1-Utilizar la IA para programacion.

-2- La IA apoyo complemento en generar graficos.

-3-Persecucion de enemigos.

-4-Generar barra de vida.

Ejemplo de IA persecucion de enemigos con Godot 4.4; Y GDScript que corrige que el enemigo mientras persige, no lo aga de espaldas;

 


Ejemplo de IA persecucion de enemigos con Godot 4.4;





extends CharacterBody3D

const SPEED = 9.0
const ACCELERATION = 8.5 # Ajusta este valor para la velocidad de respuesta deseada
@onready var navAgent = $NavigationAgent3D
#@onready var target = $"../Player" # Descomenta esta línea si tu jugador se llama "Player"
@onready var target = $"../CharacterBody3D" # Asegúrate de que esta ruta sea correcta para tu jugador


func _physics_process(delta: float) -> void:

# Elimina o comenta la rotación manual si quieres que siempre mire al objetivo
# rotate_y(0.11)

# Añadir gravedad.
if not is_on_floor():
velocity += get_gravity() * delta

if target: # Verifica si el objetivo existe
_update_target_position() # Actualiza la posición del objetivo primero

var currentLocation = global_transform.origin
var nextLocation = navAgent.get_next_path_position()
var nextVelocity = (nextLocation - currentLocation).normalized() * SPEED

velocity = velocity.move_toward(nextVelocity, ACCELERATION * delta) # Usa delta para suavizar la aceleración
move_and_slide()

# Orientar al enemigo hacia la dirección del movimiento (siguiente punto de la ruta)
if nextVelocity.length_squared() > 0.01: # Evita rotaciones cuando no hay movimiento significativo
look_at(global_transform.origin + nextVelocity, Vector3.UP)

else:
print("El objetivo (jugador) no existe.")

func _update_target_position():
if target:
navAgent.target_position = target.global_transform.origin
else:
print("El objetivo (jugador) no existe. No se puede actualizar la posición del NavigationAgent.")



s
solucinado el tema de que persigan de frente y no de espaldas

sábado, 12 de abril de 2025

Ejemplo de animar por GDScript en Godot 4.4.;

 extends Node3D


var animacion_actual = "Default simplified|GRITANDO"

var animacion_idle = "Default simplified|GRITANDO" # ANIMACION DE ESTAR QUIETO


func _ready():

$AnimationPlayer.play(animacion_actual)

pass


func _physics_process(delta):

var alguna_tecla_pulsada = false


if Input.is_action_pressed("ui_accept") or \

   Input.is_action_pressed("mouse_left") or \

   Input.is_action_pressed("luzcasco") or \

   Input.is_action_pressed("ANDAATRASCONS") or \

   Input.is_action_pressed("ANDAALANTECONW") or \

   Input.is_action_pressed("ANDAALNTECONE") or \

   Input.is_action_pressed("GIRADERECHACOND") or \

   Input.is_action_pressed("A") or \

   Input.is_action_pressed("D"):

alguna_tecla_pulsada = true


if alguna_tecla_pulsada:

# Agacharse (al presionar "luzcasco")

if Input.is_action_just_pressed("luzcasco"):

if animacion_actual != "Default simplified|ANDAR":

$AnimationPlayer.play("Default simplified|ANDAR")

animacion_actual = "Default simplified|ANDAR"


# Volver a correr (al soltar "mouse_left")

if Input.is_action_just_released("mouse_left"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Andar hacia atrás (al presionar "ANDAATRASCONS")

if Input.is_action_just_pressed("ANDAATRASCONS"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Volver a andar normal (al soltar "ANDAALANTECONW")

if Input.is_action_just_released("ANDAALANTECONW"):

if animacion_actual != "Default simplified|ANDAR":

$AnimationPlayer.play("Default simplified|ANDAR")

animacion_actual = "Default simplified|ANDAR"


# Otra acción para correr (al presionar "ANDAALNTECONE")

if Input.is_action_just_pressed("ANDAALNTECONE"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Volver a gritar (al soltar "GIRADERECHACOND")

if Input.is_action_just_released("GIRADERECHACOND"):

if animacion_actual != "Default simplified|GRITANDO":

$AnimationPlayer.play("Default simplified|GRITANDO")

animacion_actual = "Default simplified|GRITANDO"


# Correr con "A" (al presionar)

if Input.is_action_just_pressed("A"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Gritar con "A" (al soltar)

if Input.is_action_just_released("A"):

if animacion_actual != "Default simplified|GRITAR":

$AnimationPlayer.play("Default simplified|GRITAR")

animacion_actual = "Default simplified|GRITAR"


# Correr con "D" (al presionar)

if Input.is_action_just_pressed("D"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"


# Correr con "D" (al soltar) - REVISA ESTA LÓGICA

if Input.is_action_just_released("D"):

if animacion_actual != "Default simplified|correr":

$AnimationPlayer.play("Default simplified|correr")

animacion_actual = "Default simplified|correr"

else:

# Si no se presiona ninguna tecla, reproduce la animación de estar quieto

if animacion_actual != animacion_idle:

$AnimationPlayer.play(animacion_idle)

animacion_actual = animacion_idle

-----------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
ejemplo.2
-----------------------------------------------------------------------
----------------------------------------------------------------------------
extends Node3D

var animacion_actual = "Default simplified|GRITANDO"
var animacion_idle = "Default simplified|GRITANDO" # ANIMACION DE ESTAR QUIETO

func _ready():
$AnimationPlayer.play(animacion_actual)
pass

func _physics_process(delta):
var alguna_tecla_pulsada = false

if Input.is_action_pressed("ui_accept") or \
   Input.is_action_pressed("mouse_left") or \
   Input.is_action_pressed("luzcasco") or \
   Input.is_action_pressed("ANDAATRASCONS") or \
   Input.is_action_pressed("ANDAALANTECONW") or \
   Input.is_action_pressed("ANDAALNTECONE") or \
   Input.is_action_pressed("GIRADERECHACOND") or \
   Input.is_action_pressed("A") or \
   Input.is_action_pressed("D"):
alguna_tecla_pulsada = true

if alguna_tecla_pulsada:
# Agacharse (al presionar "luzcasco")
if Input.is_action_just_pressed("luzcasco"):
if animacion_actual != "Default simplified|ANDAR":
$AnimationPlayer.play("Default simplified|ANDAR")
animacion_actual = "Default simplified|ANDAR"

# Volver a correr (al soltar "mouse_left")
if Input.is_action_just_released("mouse_left"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"

# Andar hacia atrás (al presionar "ANDAATRASCONS")
if Input.is_action_just_pressed("ANDAATRASCONS"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"




# Volver a andar normal (al presionar "ANDAALANTECONW")
if Input.is_action_just_pressed("ANDAALANTECONW"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"












# Volver a andar normal (al soltar "ANDAALANTECONW")
if Input.is_action_just_released("ANDAALANTECONW"):
if animacion_actual != "Default simplified|GRITAR":
$AnimationPlayer.play("Default simplified|GRITAR")
animacion_actual = "Default simplified|GRITAR"

# Otra acción para correr (al presionar "ANDAALNTECONE")
if Input.is_action_just_pressed("ANDAALNTECONE"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"

# Volver a gritar (al soltar "GIRADERECHACOND")
if Input.is_action_just_released("GIRADERECHACOND"):
if animacion_actual != "Default simplified|GRITANDO":
$AnimationPlayer.play("Default simplified|GRITANDO")
animacion_actual = "Default simplified|GRITANDO"

# Correr con "A" (al presionar)
if Input.is_action_just_pressed("A"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"

# Gritar con "A" (al soltar)
if Input.is_action_just_released("A"):
if animacion_actual != "Default simplified|GRITAR":
$AnimationPlayer.play("Default simplified|GRITAR")
animacion_actual = "Default simplified|GRITAR"

# Correr con "D" (al presionar)
if Input.is_action_just_pressed("D"):
if animacion_actual != "Default simplified|correr":
$AnimationPlayer.play("Default simplified|correr")
animacion_actual = "Default simplified|correr"

# Correr con "D" (al soltar) - REVISA ESTA LÓGICA
if Input.is_action_just_released("D"):
if animacion_actual != "Default simplified|GRITAR":
$AnimationPlayer.play("Default simplified|GRITAR")
animacion_actual = "Default simplified|GRITAR"
else:
# Si no se presiona ninguna tecla, reproduce la animación de estar quieto
if animacion_actual != animacion_idle:
$AnimationPlayer.play(animacion_idle)
animacion_actual = animacion_idle

miércoles, 9 de abril de 2025

Godot 4.4 instancia la caida de dos piedras, dos GDScript, en el segundo GDScript hay un intervalo de 3 segundos de una piedra en otra;

 extends Area3D

#var Esferauno = preload("res://PERSONAJES MACABROS/ARAÑA/EXPLOTADA ARAÑA.tscn")

var Esferauno = preload("res://CONSTRUCCIONES/rigid_body_3d_piedra_cae-2-.tscn")

var EsferaDOS = preload("res://CONSTRUCCIONES/rigid_body_3d_piedra_cae-3-.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:

#translate(Vector3(0,0,-0.001))

pass



func _on_area_entered(area: Area3D) -> void:


var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")


get_node("CollisionShape3D").queue_free()

$"../RigidBody3D PIEDRA CAE".queue_free()


pass # Replace with function body.




func _on_area_exited(area: Area3D) -> void:


var Esferauno = Esferauno.instantiate()


add_child(Esferauno)


var EsferaDOS = EsferaDOS.instantiate()


add_child(EsferaDOS)


pass # Replace with function body.

-----------------------------------------------------------------------------------------------------------------------
ejemplo 2ª retrasa una piedra al caer 3 segundos
------------------------------------------------------------------------------------------------------------------
extends Area3D
#var Esferauno = preload("res://PERSONAJES MACABROS/ARAÑA/EXPLOTADA ARAÑA.tscn")
var Esferauno = preload("res://CONSTRUCCIONES/rigid_body_3d_piedra_cae-2-.tscn")
var EsferaDOS = preload("res://CONSTRUCCIONES/rigid_body_3d_piedra_cae-3-.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:
#translate(Vector3(0,0,-0.001))
pass


func _on_area_entered(area: Area3D) -> void:


var parent = get_parent()

var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")

get_node("CollisionShape3D").queue_free()
$"../RigidBody3D PIEDRA CAE".queue_free()


pass # Replace with function body.



func _on_area_exited(area: Area3D) -> void:


var esfera_uno_instancia = Esferauno.instantiate()
add_child(esfera_uno_instancia)

# Llamar a una función para instanciar la segunda esfera después de un retraso
call_deferred("_instanciar_esfera_dos")

pass # Replace with function body.

func _instanciar_esfera_dos():
await get_tree().create_timer(3.0).timeout
var esfera_dos_instancia = EsferaDOS.instantiate()
add_child(esfera_dos_instancia)