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

Sumar puntos con godot 4.3; GDScript;

 extends Area3D


var score = 1


func _ready():


pass



func _on_area_entered(area: Area3D) -> void:


$Label.text = str(score)


score += 1


pass


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

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

Explicacion: tenemos en un juego 3d un Area en el cielo con su colisionador donde tenemos puesto el GDScript, en el nodo Area ponemos el GDScript, en el suelo vamos destruyendo elementos y al subir el premio hacia arriba y tocar el Area que esta por encima va sumando puntuacion, la idea ahora sera hacer que al llegar a una cantidad de puntuacion se active un cambio de nivel, pero ese GDScript lo pondre mas adelante aun e de trabajar en ello.....

GDScript para emitir un sonido al presionar tecla espacio; tambien emite particulas;

 extends CPUParticles3D


# Nombre de la acción en el mapa de entrada que controla las partículas

@export var accion_activar_particulas: String = "ui_accept"

#@export var accion_activar_particulas: String = "mouse_left"


# Referencia al AudioStreamPlayer3D

@onready var audio_player: AudioStreamPlayer3D = $AudioStreamPlayer3D


func _process(delta):

# Verifica si la acción está siendo presionada

if Input.is_action_just_pressed(accion_activar_particulas): #Cambio aqui

# Si la acción está presionada y las partículas no están emitiendo, comienza a emitir

emitting = true

# Reproduce el sonido

audio_player.play()

elif Input.is_action_just_released(accion_activar_particulas):

emitting = false

elif Input.is_action_pressed(accion_activar_particulas):

emitting = true

else:

# Si la acción no está presionada y las partículas están emitiendo, deja de emitir

if emitting:

emitting = false