extends MeshInstance3D
# --- AJUSTES DESDE EL INSPECTOR ---
@export var vel_minima: float = 0.2 # Velocidad más lenta
@export var vel_maxima: float = 1.5 # Velocidad más rápida (sin pasarse)
@export var tiempo_cambio: float = 1.0 # Cada cuántos segundos cambia (1 segundo)
# Variables internas
var velocidad_actual: float = 0.5
var cronometro: float = 0.0
func _ready():
# Inicializamos con una velocidad al azar
cambiar_velocidad_aleatoria()
func _process(delta):
# 1. El cronómetro suma el tiempo que pasa
cronometro += delta
# 2. Si pasa 1 segundo (o lo que pongas en export), cambiamos la velocidad
if cronometro >= tiempo_cambio:
cambiar_velocidad_aleatoria()
cronometro = 0.0 # Reiniciamos el reloj
# 3. Aplicamos el giro con la velocidad que toque ahora
rotate_y(velocidad_actual * delta)
func cambiar_velocidad_aleatoria():
# Generamos una de las 5 velocidades posibles de forma repartida
# randi() % 5 nos da un número entre 0 y 4
var paso = (vel_maxima - vel_minima) / 4.0
var eleccion = randi() % 5
velocidad_actual = vel_minima + (paso * eleccion)
----------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------
Explicacion: Buscaba un giro de un MeshInstance3D; con forma de viga , con la caracteristica de varie su velocidad aleatoriamente desde su eje -y- al extremo hay unos personajes humanos que son hijos del MeshInstance3D; con la linea de codigo llamada @export var vel_minima: float = 0.2 # Velocidad más lenta..........concretamente @export , hace que desde el Inspector podamos variar los tiempos y las velocidades....
@export var vel_minima: float = 0.2 # Velocidad más lenta
@export var vel_maxima: float = 1.5 # Velocidad más rápida (sin pasarse)
@export var tiempo_cambio: float = 1.0 # Cada cuántos segundos cambia (1 segundo)
Esto funciona de maravilla por si ago otras vigas y asi no e de manipular el codigo gdsscript, desde el inspector vario esos numeros y ya esta.....me costo un poco entenderlo,,,pero funciona divino.....esto lo agradezco a la IA que me hace los GDScript, es curioso , creia que si un programador me hacia todo el codigo de un juego de idea mia podria hacer juegos completamente profesionales , pero no estan facil no, todo eso hay que ensamblarlo, fusionarlo para un juego, la idea el argumento el guion los graficos, la ambientacion la luz la jugavilidad , unir todo eso es dificil y sigue dando muchisimo trabajo, pero me gusta.
Ahora estoy intentando en mi juego del museo hacer que unas arañas jigantes devoren unos turistas que se pasean por el museo, para un toque macabro......se que puedo hacerlo es mas ya lo consegui,,,,pero hay que pulirlo y hacerlo chulo y jugable...bueno hay estoy......
-------------------------------------------------------------------------------------------
otro ejemplo para girar desde el inspector a otras velocidades de su eje -y-
------------------------------------------------------------------------------------------
extends Node3D
# --- AJUSTES DESDE EL INSPECTOR ---
@export var velocidad_giro: float = 1.0 # Velocidad base de rotación
@export var giro_aleatorio_al_inicio: bool = true # ¿Quieres que empiece mirando a un sitio al azar?
func _ready() -> void:
# 1. Reproducimos la animación
$AnimationPlayer.play("ATRAPA")
# 2. Si está activado, le damos una orientación al azar al nacer
if giro_aleatorio_al_inicio:
randomize()
# Giramos el objeto un ángulo aleatorio entre 0 y 360 grados (en radianes)
rotation.y = randf_range(0, TAU)
func _process(delta: float) -> void:
# 3. Hacemos que gire constantemente
# Multiplicamos por delta para que el giro sea suave
rotate_y(velocidad_giro * delta)
---------------------------------------------------------------------------------------------------------------
y otro ejemplo mas ...varia su giro de izquierda a derecha sobre si mismo en eje -y- o a la contra....
--------------------------------------------------------------------------------------------------------------
extends Node3D
# --- AJUSTES DESDE EL INSPECTOR ---
@export var velocidad_giro: float = 1.0 # Fuerza del giro
@export var tiempo_cambio_sentido: float = 2.0 # Cada cuánto tiempo cambia de dirección
@export var giro_aleatorio_al_inicio: bool = true
# Variables internas de control
var cronometro: float = 0.0
var direccion_actual: int = 1 # 1 para derecha, -1 para izquierda
func _ready() -> void:
# 1. Reproducimos la animación
$AnimationPlayer.play("ATRAPA")
# 2. Orientación inicial al azar
if giro_aleatorio_al_inicio:
randomize()
rotation.y = randf_range(0, TAU)
func _process(delta: float) -> void:
# 3. Control del tiempo para cambiar de sentido
cronometro += delta
if cronometro >= tiempo_cambio_sentido:
# Invertimos el sentido: si era 1 pasa a -1, si era -1 pasa a 1
direccion_actual *= -1
cronometro = 0.0 # Reiniciamos el reloj
# 4. Aplicamos el giro constante
# Multiplicamos: Velocidad * Sentido (1 o -1) * Tiempo
rotate_y(velocidad_giro * direccion_actual * delta)
No hay comentarios:
Publicar un comentario