viernes, 25 de julio de 2025

Videojuego cañones verano 2017;

 


miércoles, 23 de julio de 2025

GDScript para godot4.4 desde un Area3d cullo padre es un CharacterBody3D2 y persigue a un Player, destruye por colision ambos;

 extends Area3D


# Asegúrate de que estas rutas sean EXACTAMENTE correctas.

# Si el nombre del archivo tiene un espacio o un carácter especial, Godot lo necesita así.

var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA  NOKEADO.tscn") # ¡Revisa esta línea!

var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")


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

func _ready() -> void:

pass


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

func _process(delta: float) -> void:

pass


func _on_area_entered(area: Area3D) -> void:

var parent = get_parent()


if parent and parent is CharacterBody3D:

parent.queue_free()


var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")

if collision_shape_cubo:

collision_shape_cubo.queue_free()


get_node("CollisionShape3D").queue_free()


# Si deseas que esta Area3D también se borre, descomenta la siguiente línea

# queue_free()


pass


func _on_area_exited(area: Area3D) -> void:

# Asegúrate de que no estás usando 'var' aquí, ya que Esferauno ya está declarado globalmente.

var Esferauno_instancia = Esferauno.instantiate()

add_child(Esferauno_instancia)


var Esferauno1_instancia = Esferauno1.instantiate()

add_child(Esferauno1_instancia)


pass




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

ESTE DE LA PARTE INFERIOR ES EL PERFECTO INSTANCIA AL ENEMIGO DERRIBADO TAMBIEN Y DESPEJA COMPLETAMENTE DE RESTOS EL ESCENARIO

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

extends Area3D


var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA  NOKEADO.tscn")

var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")


func _ready() -> void:

pass


func _process(delta: float) -> void:

pass


func _on_area_entered(area: Area3D) -> void:

var parent = get_parent() # Obtiene una referencia al nodo padre


if parent and parent is CharacterBody3D:

var parent_global_transform = parent.global_transform # Guarda la transformación global del padre


# Instancia la escena de "POLICIA NOKEADO"

var policia_nokeado_instancia = Esferauno.instantiate()

get_tree().root.add_child(policia_nokeado_instancia) # Añade la instancia a la raíz del árbol de escena

policia_nokeado_instancia.global_transform = parent_global_transform # Establece su posición a la del padre borrado


parent.queue_free() # Borra el nodo padre (CharacterBody3D)


var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")

if collision_shape_cubo:

collision_shape_cubo.queue_free()


get_node("CollisionShape3D").queue_free()


# Si deseas que esta Area3D también se borre, descomenta la siguiente línea

# queue_free()


pass


func _on_area_exited(area: Area3D) -> void:

# Ahora, Esferauno (POLICIA NOKEADO) ya no se instanciará aquí.

# Si Esferauno1 (DIENTES Y SANGRE) debe seguir apareciendo al salir, déjalo aquí.

var Esferauno1_instancia = Esferauno1.instantiate()

add_child(Esferauno1_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.


pass


martes, 22 de julio de 2025

rock-and-roll-in-prison;

 


domingo, 20 de julio de 2025

Borrar por tiempo y animar , sin temporizador,GDScript Godot 4.4;

 extends Node3D


@export var tiempo_para_borrar: float = 5.0 # Tiempo en segundos antes de que el nodo se borre


func _ready() -> void:

$AnimationPlayer.play("mixamo_com")

# Creamos un nuevo nodo Timer

var temporizador = Timer.new()

add_child(temporizador) # Añadimos el temporizador como hijo

temporizador.wait_time = tiempo_para_borrar # Establecemos el tiempo de espera

temporizador.one_shot = true # Aseguramos que el temporizador se ejecute solo una vez

temporizador.start() # Iniciamos el temporizador

# Esperamos a que el temporizador termine

await temporizador.timeout

# Una vez que el temporizador ha terminado, borramos el nodo

queue_free()

jueves, 17 de julio de 2025

GDScript Godot 4.4 abrir puertas en eje "x" de lado a alado no en eje "y" de arriba abajo;

 extends Area3D


@export var velocidad_subida: float = 3.3

@export var velocidad_bajada: float = 3.3  # Cambié el nombre para mayor claridad

@export var altura_maxima: float = 1.0  # Altura máxima que subirá el objeto

@export var altura_inicial: float = 0.0 # Altura inicial del objeto


var objeto: Node3D  # Variable para almacenar el nodo CSGBox3D7

var subiendo: bool = false

var bajando: bool = false

var altura_actual: float = 0.0


@onready var sonido_puerta = $AudioStreamPlayer3D # ¡Añade esta línea! Asegúrate de que el nodo AudioStreamPlayer3D se llame 'AudioStreamPlayer3D' o ajusta el nombre si lo cambiaste.


func _ready():

#objeto = $CSGBox3D7  # Asignamos el nodo a la variable

objeto = $"CSGBox3D6 PUERTACARCEL"  # Asignamos el nodo a la variable

altura_actual = objeto.position.x # Obtiene la altura inicial del objeto

altura_inicial = altura_actual # guarda la altura inicial


func _physics_process(delta):

if objeto:  # Verifica si el objeto existe

if subiendo:

altura_actual += velocidad_subida * delta

altura_actual = min(altura_actual, altura_inicial + altura_maxima) # Limita la altura máxima

objeto.position.x = altura_actual

if altura_actual >= altura_inicial + altura_maxima:

subiendo = false  # Detiene la subida al alcanzar la altura máxima

elif bajando:

altura_actual -= velocidad_bajada * delta

altura_actual = max(altura_actual, altura_inicial)  # Limita la altura mínima

objeto.position.x = altura_actual

if altura_actual <= altura_inicial:

bajando = false  # Detiene la bajada al alcanzar la altura inicial


func _on_area_entered(area: Area3D) -> void:

subiendo = true

bajando = false

# ¡Añade esta línea para reproducir el sonido!

if sonido_puerta and not sonido_puerta.playing: # Verifica que el nodo existe y no está sonando ya

sonido_puerta.play()


func _on_area_exited(area: Area3D) -> void:

subiendo = false

bajando = true

# Puedes añadir un sonido diferente para cuando la puerta baja aquí si lo deseas

# Por ejemplo:

# if sonido_puerta and sonido_puerta.playing: # O puedes usar otro AudioStreamPlayer3D para el sonido de bajada

#     sonido_puerta.stop() # Detiene el sonido si aún está sonando al salir

domingo, 13 de julio de 2025

Un MeshInstance3D gira con alternancias sobre si mismo, GDScript para Godot 4.4;

 extends MeshInstance3D


@export var rotation_speed_min := 0.5

@export var rotation_speed_max := 2.0

@export var rotation_change_interval := 2.0


var current_rotation_speed := 0.0

var time_since_last_change := 0.0

var current_axis := Vector3.ZERO


func _ready():

_set_new_rotation_parameters()


func _process(delta):

time_since_last_change += delta

if time_since_last_change >= rotation_change_interval:

_set_new_rotation_parameters()

time_since_last_change = 0.0


# Apply rotation

rotate_object_local(current_axis, current_rotation_speed * delta)


func _set_new_rotation_parameters():

# Randomize rotation speed

current_rotation_speed = randf_range(rotation_speed_min, rotation_speed_max)


# Randomize rotation axis

var random_x = randf_range(-1.0, 1.0)

var random_y = randf_range(-1.0, 1.0)

var random_z = randf_range(-1.0, 1.0)

current_axis = Vector3(random_x, random_y, random_z).normalized()