domingo, 9 de marzo de 2025

Como se hacen enemigos persiguiendo a player en Godot 4.4;

 GDScript Godot 4.4 se pone al enemigo:

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

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

extends CharacterBody3D


const SPEED = 7.0

const ACCELERATION = 5.5 # Ajusta este valor para la velocidad de respuesta deseada

@onready var navAgent = $NavigationAgent3D

@onready var target = $"../Player"


func _physics_process(delta: float) -> void:

# 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()

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

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

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

Un complemento sobre restar puntos vidas al player; cuando le toca el enemigo resta 1 punto en cada choque entrada en su area3d, y al llegar a 0 puntos sale escena de Game over, escribo Game Hover, tengo problemas de ortografia, pero los GDScript son perfectos, cualquier duda o aclaracion hoy en dia es sencillisima de resolver , solo teneis que copiar los GDScript y pegarlos en la IA de vuestro navegador  o IA que utiliceis, y corregira cualquier minimo fallo , Hoy en dia aunque no sepas programar la IA te lo acaba de resolver todo y ayuda a aprender.

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

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

extends Area3D


var score = 10


func _ready():

pass


func _on_area_entered(area: Area3D) -> void:

$LabelRESTA.text = str(score)

score -= 1


if score < 0:

get_tree().change_scene_to_file("res://ESCENA DE PERDER/PIERDES.tscn")



func _on_timer_timeout() -> void:

pass # Replace with function body.

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

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

Aqui GDScript para sumar puntos cuando enemigo pasa por los aros aros de un color premio de ese color aros de otro color premio de otro color, al sumar una determinada cantidad de puntos.......

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

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

extends Area3D


var score = 1


func _ready():

pass


func _on_area_entered(area: Area3D) -> void:

$Label.text = str(score)

score += 1


if score > 10:

get_tree().change_scene_to_file("res://TIAS EN PELOTAS -2-/Thriller Part 3.tscn")



func _on_timer_timeout() -> void:

pass # Replace with function body.

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

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

En unos dias el juego estara en Itch.io de ¡¡forma gratuita para su descarga.!!....desde este enlace https://perico415.itch.io/

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

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


NavigationRegion3D detalle muy importante en Godot 4.4 3d. para que funcione el GDScript...mirar video superior



Un complemento de juego un GDScript a los 4 segundos del game over retorna al comienzo del juego.

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

extends Node3D


var timer = Timer.new()


func _ready() -> void:

add_child(timer)

timer.one_shot = true

timer.timeout.connect(_on_timer_timeout)

timer.start(4) # Inicia el temporizador de 3 segundos


func _on_timer_timeout():

get_tree().change_scene_to_file("res://MAPnode_3d.tscn") # Cambia a la escena "MAPnode_3d.tscn"


func _process(delta: float) -> void:

pass


miércoles, 5 de marzo de 2025

GDScript para girar particulas 3d con Godot 4.4; ahora todo lo are con Godot 4.4; Adios Godot 4.3;

 extends CPUParticles3D


var rotation_speed : float = 2.0 # Velocidad de rotación en radianes por segundo


func _ready() -> void:

pass


func _process(delta: float) -> void:

rotate_y(rotation_speed * delta)


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

otro ejemplo ampliando en eje "x"

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

extends CPUParticles3D


var rotation_speed : float = 2.0 # Velocidad de rotación en radianes por segundo


func _ready() -> void:

pass


func _process(delta: float) -> void:

rotate_y(rotation_speed * delta)

rotate_x(rotation_speed * delta)


martes, 4 de marzo de 2025

GDScript de sumar puntos ; al conseguir 8 puntos cambia a otra escena; esta asu vez se borra y retorna a la primera pasados unos segundos;Godot 4.3;


 extends Area3D


var score = 1


func _ready():

pass


func _on_area_entered(area: Area3D) -> void:

$Label.text = str(score)

score += 1


if score > 8:

get_tree().change_scene_to_file("res://TIAS EN PELOTAS/Hip Hop Dancing AMARILLA.tscn")



func _on_timer_timeout() -> void:

pass # Replace with function body.

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

---------------------------------------------------------------------------------------------------------------------------- Estas 2 capturas de pantalla y GDScripts se complementan en un juego------------------------------------

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

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





GDScript que reproduce una animacion 3d de un nodo, durante 7 segundos; luego cambia a la escena principal;Godot 4.3;


 extends Node3D


var timer = Timer.new()


func _ready() -> void:

$AnimationPlayer.play("mixamo_com")

add_child(timer)

timer.one_shot = true

timer.timeout.connect(_on_timer_timeout)

timer.start(7) # Inicia el temporizador de 3 segundos


func _on_timer_timeout():

get_tree().change_scene_to_file("res://MAPnode_3d.tscn") # Cambia a la escena "MAPnode_3d.tscn"


func _process(delta: float) -> void:

pass

domingo, 2 de marzo de 2025

Enemigo persigue a player en godot 4.3; GDScript del enemigo y del player; y lo nodos y graficos correspondientes;


 extends CharacterBody3D


const SPEED = 5.0

const ACCELERATION = 1.0 # Ajusta este valor para la velocidad de respuesta deseada

@onready var navAgent = $NavigationAgent3D

@onready var target = $"../Player"


func _physics_process(delta: float) -> void:

# 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()

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

----------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Explicacion: el GDScript de encima es para poner al enemigo, es para Godot 4.3 en juego 3d, fijarse en la ilustracion en los nombres de los nodos y los graficos elementos del juego...... el GDScript  inferior es para mover al player.
--------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
extends CharacterBody3D


const SPEED = 5.0
const JUMP_VELOCITY = 4.5


func _physics_process(delta: float) -> void:
# Add the gravity.
if not is_on_floor():
velocity += get_gravity() * delta

# Handle jump.
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = JUMP_VELOCITY

# Get the input direction and handle the movement/deceleration.
# As good practice, you should replace UI actions with custom gameplay actions.
var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
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()







domingo, 23 de febrero de 2025

Sumar puntos con godot 4.3; GDScript; Y AL ALCANZAR 6 PUNTOS CAMBIAR LA ESCENA;

extends Area3D


var score = 1


func _ready():

pass


func _on_area_entered(area: Area3D) -> void:

$Label.text = str(score)

score += 1

if score > 6:

get_tree().change_scene_to_file("res://ESCENAS NIVELES/FINALworld_environment.tscn")

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

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

#Explicacion: arrastrar con el mouse desde la carpeta res:   hacia la linea del codigo escrito, para que este bien enrutado, ("res://ESCENAS  NIVELES/FINALworld_environment.tscn") asi correcto, si en lugar escribiese  ("res://FINALworld_environment.tscn") no funcionaria porque el archivo tscn esta en una subcarpeta dentro de la carpeta "res" osea en "res " contiene la carpeta "ESCENAS  NIVELES"

y "ESCENAS  NIVELES" contiene el archivo tscn "FINALworld_environment.tscn"......esta es mi explicacion que la IA no te explica , ahora pondre la explicacion de la IA................Explicación:

  1. extends Area3D:

    • Esta línea indica que el script está adjunto a un nodo de tipo Area3D. Los nodos Area3D se utilizan para detectar colisiones y superposiciones en un espacio 3D.
  2. var score = 1:

    • Se declara una variable llamada score y se inicializa en 1. Esta variable se utilizará para llevar la cuenta de los puntos.
  3. func _ready(): pass:

    • La función _ready() se llama cuando el nodo está listo para ser utilizado. En este caso, no se realiza ninguna acción específica, por lo que se utiliza pass.
  4. func _on_area_entered(area: Area3D) -> void::

    • Esta función se llama automáticamente cuando otro nodo Area3D entra en el área de este nodo.
    • $Label.text = str(score): Esta linea, le dice al objeto label que muestre el valor de la variable score.
    • score += 1: Incrementa la variable score en 1 cada vez que se detecta una colisión.
  5. if score > 6::

    • Se agrega una condición if para verificar si la variable score es mayor que 6.
  6. get_tree().change_scene_to_file("res://FINALworld_environment.tscn"):

    • Si la condición score > 6 se cumple, esta línea de código se ejecuta.
    • get_tree(): Obtiene el árbol de la escena actual.
    • change_scene_to_file("res://FINALworld_environment.tscn"): Carga y cambia a la escena especificada por la ruta "res://FINALworld_environment.tscn". Asegúrate de que esta ruta sea correcta y que la escena exista en tu proyecto.

Cómo usarlo:

  1. Asegúrate de que tienes una escena llamada "FINALworld_environment.tscn" en la raíz de tu proyecto.
  2. Adjunta este script a un nodo Area3D.
  3. Asegúrate de que hay otro nodo Area3D que puede entrar en el área del nodo al que has adjuntado este script.
  4. Crea un nodo de tipo Label, y nombra ese nodo como "Label".
  5. Cuando el otro nodo Area3D entre en el área 6 veces, la escena cambiará a "FINALworld_environment.tscn". 

Y aqui el gdscript facilitado por la IA:

extends Area3D

var score = 1

func _ready():
    pass

func _on_area_entered(area: Area3D) -> void:
    $Label.text = str(score)
    score += 1
    
    if score > 6:
        get_tree().change_scene_to_file("res://FINALworld_environment.tscn")