lunes, 31 de marzo de 2025

Subir y bajar una puerta con Godot 4.4; perfecto; en GDScript;

 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 = 5.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


func _ready():

    objeto = $CSGBox3D7  # Asignamos el nodo a la variable

    altura_actual = objeto.position.y # 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.y = 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.y = 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


func _on_area_exited(area: Area3D) -> void:

    subiendo = false

    bajando = true

domingo, 30 de marzo de 2025

puerta en Godot 4.4 abrirla;

 extends Area3D


@export var velocidad_subida: float = 1.3


var subiendo: bool = false


func _physics_process(delta):

if subiendo:

if $CSGBox3D7: # verifica si el nodo existe

$CSGBox3D7.translate(Vector3(0, velocidad_subida, 0) * delta)


func _on_area_entered(area: Area3D) -> void:

subiendo = true


func _on_area_exited(area: Area3D) -> void:

subiendo = false


GDScript giro sobre si mismo en eje "y" alterna de izquierda a derecha y de derecha a izquierda; tambien en eje "Z" ;Godot4.4;

 extends MeshInstance3D


@export var rotation_speed_y: float = 0.03

@export var rotation_speed_z: float = 0.02 # Velocidad para el eje Z (ajusta según necesites)

@export var direction_change_interval: float = 3.0


var rotation_direction_y: int = 1

var rotation_direction_z: int = 1

var time_since_direction_change: float = 0.0


func _ready() -> void:

    pass


func _process(delta: float) -> void:

    rotate_y(rotation_speed_y * rotation_direction_y)

    rotate_z(rotation_speed_z * rotation_direction_z)


    time_since_direction_change += delta


    if time_since_direction_change >= direction_change_interval:

        rotation_direction_y *= -1

        rotation_direction_z *= -1

        time_since_direction_change = 0.0

GDScript giro sobre si mismo en eje "y" alterna de izquierda a derecha y de derecha a izquierda; Godot4.4;

 extends MeshInstance3D


@export var rotation_speed: float = 0.03

@export var direction_change_interval: float = 3.0 # Intervalo de cambio de dirección en segundos


var rotation_direction: int = 1

var time_since_direction_change: float = 0.0


func _ready() -> void:

pass


func _process(delta: float) -> void:

rotate_y(rotation_speed * rotation_direction)


time_since_direction_change += delta


if time_since_direction_change >= direction_change_interval:

rotation_direction *= -1

time_since_direction_change = 0.0


GDScript baja puntuacion y escala a reduccion Sprite2D y mesh_instance_3d; hace efectos de barra de vida; funciona;Godot4.4;

 extends Area3D


var score = 10

@onready var mesh_instance_3d = $"../../CharacterBody3D/CollisionShape3D/PROTAGONISTA EXPLORADORA VARIOS MOVIMIENTOS ANDAR CORRER GRITAR_/MeshInstance3D2 PRUEBAS DE CORAZON"

@onready var sprite_rojo = $"Sprite2D rojo"

@onready var label_resta = $"Label resta"


func _ready():

actualizar_visualizacion()


func _on_area_entered(area: Area3D) -> void:

if area.is_ancestor_of(self): #evita que se active el trigger con el mismo objeto que contiene el script

return

#$AudioStreamPlayer3D.play() #si lo quieres activar descomentalo

score -= 1

actualizar_visualizacion()


if score < 0:

get_tree().change_scene_to_file("res://ESCENAS/1-world_environmentESCENA-1-.tscn")


func actualizar_visualizacion():

label_resta.text = str(score)

var escala = float(score) / 10.0

sprite_rojo.scale = Vector2(escala, escala)

mesh_instance_3d.scale = Vector3(escala, escala, escala) #se corrige para que trabaje en 3D

if score <= 0:

sprite_rojo.visible = false

mesh_instance_3d.visible = false


func _on_timer_timeout() -> void:

pass


GDScript efectos de tembleque y de bombeo de un corazon 3d MeshInstance3D;Godot4.4;

 extends MeshInstance3D


@export var shake_amount: float = 5.0

@export var shake_speed: float = 5.4


var original_position: Vector3


func _ready():

original_position = position


func _process(delta):

var random_offset = Vector3(

randf_range(-shake_amount, shake_amount),

randf_range(-shake_amount, shake_amount),

randf_range(-shake_amount, shake_amount)  # Añadido componente Z

)

position = original_position + random_offset


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

----------------------------------------------- este de debajo bombea--------------------------------------------


extends MeshInstance3D


@export var pulse_amount: float = 0.5 # Cantidad de expansión/contracción

@export var pulse_speed: float = 2.0  # Velocidad del latido


var original_scale: Vector3

var time: float = 0.0


func _ready():

original_scale = scale


func _process(delta):

time += delta * pulse_speed

var pulse = sin(time) * pulse_amount

scale = original_scale + Vector3(pulse, pulse, pulse) # Expande/contrae uniformemente


# O, si quieres que el latido sea solo en un eje (por ejemplo, el Y):

# scale = original_scale + Vector3(0, pulse, 0)


sábado, 29 de marzo de 2025

extends Sprite2D un GDScript que hace un temblor al Sprite2D, efecto bueno para imitar el miedo de un corazon;Godot4.4;

 extends Sprite2D


@export var shake_amount: float = 5.0

@export var shake_speed: float = 10.0


var original_position: Vector2


func _ready():

    original_position = position


func _process(delta):

    var random_offset = Vector2(randf_range(-shake_amount, shake_amount), randf_range(-shake_amount, shake_amount))

    position = original_position + random_offset

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

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

Explicacion: este GDScript se combina de maravilla con este enlace, en el que construyo un corazon que se va disipando, como barra de vida....Desarrollo y creacion de videojuegos.Godot,Unity,Blender,Gimp,Game Maker,: Barra de vida en Godot 4.4 en 3d; estudio GDScript;