miércoles, 17 de abril de 2024

Script para animar humanoide y rotarlo a si mismo desde un nodo3d para godot 4.2;

 extends Node3D



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

func _ready():

pass # Replace with function body.



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

func _process(delta):

rotate_y(0.1)

$AnimationPlayer.play("LAENFADA")

pass


martes, 16 de abril de 2024

Script borra softbody3d de un personaje el vestido; godot 4.2; Script PARA RigidBody3D Y ALOS 3 SEGUNDOS LO BORRA ;

 extends Area3D



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

func _ready():

pass # Replace with function body.



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

func _process(delta):

pass



func _on_area_entered(area):

$"LA VIEJA/SoftBody3D".queue_free()

$"LA VIEJA/SoftBody3D3".queue_free()

$"LA VIEJA/SoftBody3D4".queue_free()

$"LA VIEJA/SoftBody3D2".queue_free()

pass # Replace with function body.

------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------
EXPLICACION:  De un Area3d (donde e puesto el script) parten 2 hijos "la vieja" (un node3D) y el otro un CollisionShape3D....los SoftBody3D los cuatro diferentes del script son hijos del "la vieja" (un node3D) y nietos del area3d principal . funciona a la perfeccion cuando el player choca con  CollisionShape3D  se borra el vestido ,este ejemplo es de arriba, abajo otra variante que funciona en el cubo en la ropa no funciona............¡¡atencion estos scripts cuando repite  colisionar el juego se bloquea!! aun tiene fallos.........
--------------------------------------------------------------------------------------------------------------------------
extends Area3D


# Called when the node enters the scene tree for the first time.
func _ready():
pass # Replace with function body.


# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
pass


func _on_area_entered(area):
#$"LA VIEJA/SoftBody3D3".queue_free()
#$"LA VIEJA/SoftBody3D4".queue_free()
#$"LA VIEJA/SoftBody3D2".queue_free()
#$"LA VIEJA/CSGBox3Dgira".rotate_x(1)
$"LA VIEJA/CSGBox3Dgira".scale /= 2.5
$"LA VIEJA/SoftBody3D".scale /= 0.005
$"LA VIEJA/SoftBody3D2".scale /= 0.005
$"LA VIEJA/SoftBody3D3".scale /= 0.005
$"LA VIEJA/SoftBody3D4".scale /= 0.005
pass # Replace with function body.



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

ESTE DE DEBAJO SI FUNCIONA SIN PROBLEMAS , SE PONE A UN  RigidBody3D Y ALOS 3 SEGUNDOS LO BORRA NO NECESITA SEÑAL TAMPOCO.
-------------------------------------------------------------------------------------------------------------
extends RigidBody3D

var timer = 0.0

func _physics_process(delta):
# Incrementar el temporizador
timer += delta

# Eliminar el RigidBody3D después de 3 segundos
if timer >= 3.0:
queue_free()


lunes, 15 de abril de 2024

GDScript proboca explosion y borra barco y sale barco roto, instancia explosion bolas instancia barco roto y borra barco sin destruir;

 extends Area3D


var esfera_prefab = preload("res://BARCO Y ELEMENTOS DEL BARCO/BOTE/BOTECAIDO.tscn")  # Precarga el prefab del barco (bote caído)

var explosion_prefab = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn")  # Precarga el prefab de la explosión (invento genial)


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

func _ready():

pass  # No hay necesidad de código inicial en este ejemplo


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

func _process(delta):

pass  # No hay necesidad de código por frame en este ejemplo


# Detecta cuando otro nodo entra en el área

func _on_area_entered(area):

# Verifica si el objeto que entró tiene un nodo CollisionShape3D

if area.has_node("CollisionShape3D"):


var barco_instancia = esfera_prefab.instantiate()


# Crea una instancia del prefab de la explosión (invento genial)

var explosion_instancia = explosion_prefab.instantiate()


# Agrega las instancias como hijos de este nodo

add_child(barco_instancia)

add_child(explosion_instancia)


# Detecta cuando otro nodo sale del área (opcional)

func _on_area_exited(area):

var parent = get_parent()


var CollisionShape3Dcubo = parent.get_node("CollisionShape3D")


get_node("CollisionShape3D").queue_free()  # Intento de eliminar CollisionShape3D propio (comentado)

---------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------
EXPLICACION:::::::
estructura padres e hijos .. padre principal de todo  WorldEnvironment hijo donde esta el script un Area3d esta tiene de nieto un CollisionShape3D de este sale dos vicnietos un MeshInstance3D y otro MeshInstance3D con nombre "bote2


Instancia bolas cuando entra en un Area3d el player y cuando presiona boton del mouse, para godot 4,2 3D; GDScript;

 extends Area3D


var Bullet = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn")


func _ready():


pass # Replace with function body.



func _input(event):


if event is InputEventMouseButton:


if event.button_index == 1:


var bullet = Bullet.instantiate()



add_child(bullet)



func _on_area_entered(area):

var bullet = Bullet.instantiate()



add_child(bullet)

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

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

En el script de debajo funciona solo cuando pasa por su Area3d, pusimos signo"#" a lo que no queremos que ejecute

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

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

extends Area3D var Bullet = preload("res://ESCENAS/EXPLOSION BAJO BOTE.tscn") func _ready(): pass # Replace with function body. #func _input(event): #if event is InputEventMouseButton: #if event.button_index == 1: #var bullet = Bullet.instantiate() #add_child(bullet) func _on_area_entered(area): var bullet = Bullet.instantiate() add_child(bullet)




A los 3 segundos borra nodo3d, y todo su contenido para Godot 4.2; Script GDScript;

 extends Node3D


var tiempo_transcurrido = 0.0 # Variable para almacenar el tiempo transcurrido


func _process(delta):

# Actualizar el tiempo transcurrido

tiempo_transcurrido += delta


# Eliminar el nodo después de 3 segundos

if tiempo_transcurrido >= 3.0:

queue_free() # Elimina el nodo de la escena


viernes, 12 de abril de 2024

Anima label y lo borra por tiempo, titulo de juego; para Godot 4.2;

 extends Label


var tiempo_de_vida = 4.0 # Duración en segundos antes de eliminar el Label


func _ready():

# Obtener el Label que queremos usar

var label_tiempo_vida = $"."


# Mostrar el texto del Label en este Label

text = label_tiempo_vida.text


# Iniciar el temporizador

$Timer.start(tiempo_de_vida)


func _on_timer_timeout():

# Eliminar el Label

queue_free()


func _process(delta):

$AnimationPlayer.play("FONDOMUEBETE")

# Si el tiempo de vida ha llegado a 0, eliminar el Label

if tiempo_de_vida <= 0:

_on_timer_timeout()

return


# Reducir el tiempo de vida en cada frame

tiempo_de_vida -= delta


EN GODOT 4.2, SCRIPT POR PUNTUACION SI LLEGA A LOS 8 PUNTOS BORRA LA ESCENA Y CAMBIA A OTRA CON CAMARA FUNCIONA¡¡¡¡¡¡¡¡;

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

------------------------------------------------------------------------------------------------------------------
SCRIPT POR PUNTUACION SI LLEGA A LOS 8 PUNTOS BORRA LA ESCENA Y CAMBIA A OTRA CON CAMARA FUNCIONA¡¡¡¡¡¡¡¡
---------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
extends Area3D  

#var fuerza_intensidad = 110.9  // Variable que define la intensidad de la fuerza que se aplicará en la colisión.
var score = 0  


# Se llama cuando el nodo ingresa al árbol de escena por primera vez.

func _ready():
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar configuraciones iniciales.


# Se llama en cada frame del juego. 'delta' es el tiempo transcurrido desde el frame anterior.

func _process(delta):
pass  # Por ahora, este método está vacío, pero puedes usarlo para realizar acciones que se repiten cada frame.


func _on_area_entered(area):  # Se llama cuando otro objeto entra en el área de colisión de este nodo.

# Actualiza el texto del Label3D para mostrar la puntuación actual.
$Label3D.text = str(score)

# Aumenta la puntuación en 1.
score += 1

# Reproduce la animación "EXPLOTA" del AnimationPlayer adjunto al padre de este nodo (../ indica subir un nivel en la jerarquía del árbol de escena).
$"../AnimationPlayer".play("EXPLOTA")

# Reproduce el AudioStreamPlayer3D asociado al AnimationPlayer para generar un sonido de explosión.
$"../AnimationPlayer/AudioStreamPlayer3D".play()
# La parte comentada define una dirección de fuerza, por ahora no se usa en el código.
# var direccion_fuerza = Vector3(fuerza_intensidad, 0.0, 0.0)

# Puedes agregar aquí código para aplicar la fuerza a objetos que entren en colisión.

# Si la puntuación alcanza los 100 puntos, cambia de escena a "AMA".
if score == 8:
var siguiente_escena = preload("res://BARCO Y ELEMENTOS DEL BARCO/BARRIL EXPLOSIBO/bidon.tscn")  # Precargar la escena

get_tree().change_scene_to_packed(siguiente_escena)  # Cambiar a la escena precargada (Godot 4.2)

queue_free()  # Liberar este nodo después del cambio de escena

pass