Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
@GDScript¶
Funciones GDScript Incorporadas.
Descripción¶
Lista de funciones primordiales e incorporadas de GDScript. Funciones matemáticas y otras utilidades. Todo lo demás está proporcionado por objetos. (Palabras clave: incorporado, includido, funciones globales.)
Métodos¶
void |
|
bytes2var ( PoolByteArray bytes, bool allow_objects=false ) |
|
cartesian2polar ( float x, float y ) |
|
deep_equal ( Variant a, Variant b ) |
|
dict2inst ( Dictionary dict ) |
|
get_stack ( ) |
|
instance_from_id ( int instance_id ) |
|
inverse_lerp ( float from, float to, float weight ) |
|
is_equal_approx ( float a, float b ) |
|
is_instance_valid ( Object instance ) |
|
is_zero_approx ( float s ) |
|
lerp_angle ( float from, float to, float weight ) |
|
move_toward ( float from, float to, float delta ) |
|
nearest_po2 ( int value ) |
|
parse_json ( String json ) |
|
polar2cartesian ( float r, float th ) |
|
void |
print ( ... ) vararg |
void |
print_debug ( ... ) vararg |
void |
print_stack ( ) |
void |
printerr ( ... ) vararg |
void |
printraw ( ... ) vararg |
void |
prints ( ... ) vararg |
void |
printt ( ... ) vararg |
void |
push_error ( String message ) |
void |
push_warning ( String message ) |
rand_range ( float from, float to ) |
|
randf ( ) |
|
randi ( ) |
|
void |
randomize ( ) |
range ( ... ) vararg |
|
range_lerp ( float value, float istart, float istop, float ostart, float ostop ) |
|
void |
|
smoothstep ( float from, float to, float s ) |
|
step_decimals ( float step ) |
|
str ( ... ) vararg |
|
type_exists ( String type ) |
|
validate_json ( String json ) |
|
Constantes¶
PI = 3.141593 --- Constante que representa cuántas veces el diámetro de un círculo se encuentra contenido en su perímetro.Esto equivale a
TAU / 2
.TAU = 6.283185 --- The circle constant, the circumference of the unit circle in radians. This is equivalent to
PI * 2
, or 360 degrees in rotations.INF = inf --- Positive floating-point infinity. This is the result of floating-point division when the divisor is
0.0
. For negative infinity, use-INF
. Dividing by-0.0
will result in negative infinity if the numerator is positive, so dividing by0.0
is not the same as dividing by-0.0
(despite0.0 == -0.0
returningtrue
).
Note: Numeric infinity is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer number by 0
will not result in INF and will result in a run-time error instead.
NAN = nan --- "Not a Number", an invalid floating-point value. NAN has special properties, including that it is not equal to itself (
NAN == NAN
returnsfalse
). It is output by some invalid operations, such as dividing floating-point0.0
by0.0
.
Note: "Not a Number" is only a concept with floating-point numbers, and has no equivalent for integers. Dividing an integer 0
by 0
will not result in NAN and will result in a run-time error instead.
Descripciones de Métodos¶
Devuelve un color construido con los enteros positivos de los canales rojo, verde, azul y alfa. Cada canal tiene 8 bits de informacion con un rango entre 0 y 255.
r8
canal rojo
g8
canal verde
b8
canal azul
a8
canal alfa
rojo = Color8(255, 0, 0)
Devuelve un color según el name
estandarizado con el alpha
que va de 0 a 1.
rojo = ColorN("red", 1)
Los nombres de los colores soportados son los mismos que las constantes definidas en Color.
Devuelve el valor absoluto del parámetro s
(es decir, un valor positivo).
a = abs(-1) # a es 1
Devuelve el arco coseno de s
en radianes. Se usa para obtener el ángulo del coseno de s
. s
debe estar entre -1.0
y 1.0
(inclusive), en otro caso, acos devolverá NAN.
# c es 0.523599 o 30 grados si se convierte con rad2deg(s)
c = acos(0.866025)
Devuelve el arcoseno de s
en radianes. Se usa para obtener el ángulo del seno de s
. s
debe estar entre -1.0
y 1.0
(inclusive), en otro caso, asin devolverá NAN.
# s es 0.523599 o 30 grados si se convierte conrad2deg(s)
s = asin(0.5)
Afirma que la condición condition
es true
. Si la condición condition
es false
, se genera un error. Cuando se ejecuta desde el editor, el proyecto en ejecución también se pausará hasta que lo reanude. Esto se puede utilizar como una forma más restrictiva de push_error para informar errores a los desarrolladores de proyectos o usuarios de complementos.
Nota: Por razones de rendimiento, el código dentro de assert solo se ejecuta en compilaciones de depuración o cuando se ejecuta el proyecto desde el editor. No incluya código que tenga efectos secundarios en una llamada a assert. En otro caso, el proyecto se comportará de manera diferente cuando se exporta en modo de lanzamiento.
El argumento opcional message
, si es dado, se muestra además del mensaje genérico "Assertion failed". Puede usar esto para proporcionar detalles adicionales sobre por qué la afirmación falló.
# Imagine que siempre quisiéramos que la velocidad (speed) esté entre 0 y 20
var speed = -10
assert(speed < 20) # Verdadero, el programa continuará
assert(speed >= 0) # Falso, el programa se detendrá
assert(speed >= 0 and speed < 20) # También puedes combinar las dos declaraciones condicionales en un sola comprobación
assert(speed < 20, "speed = %f, pero el límite de velocidad es 20" % speed) # Muestra un mensaje detallado
Devuelve el arco tangente de s
en radianes. Úsalo para obtener el ángulo de la tangente de un ángulo en trigonometría: atan(tan(angle)) == angle
.
El método no puede saber en qué cuadrante el ángulo se encuentra. Vea atan2 si tienes tanto y
como x
a = atan(0.5) # a is 0.463648
Devuelve la arcotangente de y/x
en radianes. Usalo para obtener el angulo de la tangente y/x
. Para obtener el valor, el metodo tiene en cuenta el signo de ambos argumentos para determinar el cuadrante.
Nota importante: La coordenada Y es la primera, por convención.
a = atan2(0, -1) # a is 3.141593
Variant bytes2var ( PoolByteArray bytes, bool allow_objects=false )
Decodifica una array de bytes a un valor. Cuando allow_objects
es true
se permite la decodificación de objetos.
AvisoEl objeto deserializado puede contener código que se pueda ejecutar. No utilice esta opción si el objeto serializado proviene de fuentes en las que no confie para evitar posibles amenazas a la seguridad (ejecución remota de código).
Convierte un punto 2D expresado en el sistema de coordenadas cartesianas (ejes X e Y) en el sistema de coordenadas polares (una distancia del origen y un ángulo).
Redondea s
por encima, devolviendo el valor entero más pequeño que no es menor que s
.
a = ceil(1.45) # a es 2
a = ceil(1.001) # a es 2
Devuelve un carácter como una cadena de tipo Unicode (el cual es compatible con el código ASCII).
a = char(65) # a es "A"
a = char(65 + 32) # a es "a"
a = char(8364) # a es "€"
Esto es el inverso de ord.
Acota value
y devuelve un valor que no es menor que min
y no mayor que max
a = clamp(1000, 1, 20) # a es 20
a = clamp(-10, 1, 20) # a es 1
a = clamp(15, 1, 20) # a es 15
Convierte de un tipo a otro de la mejor manera posible. El parámetro type
utiliza los valores de Variant.Type.
a = Vector2(1, 0)
# Imprime 1
print(a.length())
a = convert(a, TYPE_STRING)
# Imprime 6 porque "(1, 0)" es una string de 6 caracteres. Nota que hay un espacio entre la , y el 0.
print(a.length())
Devuelve el coseno del ángulo s
en radianes.
a = cos(TAU) # a es 1.0
a = cos(PI) # a es -1.0
Devuelve el coseno hiperbólico de s
en radianes.
print(cosh(1)) # Imprime 1.543081
Convierte de decibeles a energía lineal (audio).
Alias obsoleto del step_decimals.
Nota: dectime
ha quedado obsoleto y se eliminará en Godot 4.0, por favor utilice move_toward en su lugar.
Devuelve el resultado de value
menos step
* amount
.
a = dectime(60, 10, 0.1)) # a es 59.0
Compares two values by checking their actual contents, recursing into any Array or Dictionary up to its deepest level.
This compares to ==
in a number of ways:
For
null
,int
,float
,String
,Object
andRID
bothdeep_equal
and==
work the same.For
Dictionary
,==
considers equality if, and only if, both variables point to the very sameDictionary
, with no recursion or awareness of the contents at all.For
Array
,==
considers equality if, and only if, each item in the firstArray
is equal to its counterpart in the secondArray
, as told by==
itself. That implies that==
recurses intoArray
, but not intoDictionary
.
In short, whenever a Dictionary
is potentially involved, if you want a true content-aware comparison, you have to use deep_equal
.
Convierte un ángulo expresado en grados a radianes.
# r es 3.141593
r = deg2rad(180)
Object dict2inst ( Dictionary dict )
Convierte un diccionario (que fue creado previamente con inst2dict) de nuevo a una instancia. Es útil para deserializar.
Returns an "eased" value of x
based on an easing function defined with curve
. This easing function is based on an exponent. The curve
can be any floating-point number, with specific values leading to the following behaviors:
- Lower than -1.0 (exclusive): Ease in-out
- 1.0: Linear
- Between -1.0 and 0.0 (exclusive): Ease out-in
- 0.0: Constant
- Between 0.0 to 1.0 (exclusive): Ease out
- 1.0: Linear
- Greater than 1.0 (exclusive): Ease in
ease() curve values cheatsheet
See also smoothstep. If you need to perform more advanced transitions, use Tween or AnimationPlayer.
La función exponencial natural. Eleva la constante matemática e a la potencia de s
y la devuelve.
e tiene un valor aproximado de 2,71828, y puede obtenerse con exp(1)
.
Para los exponentes a otras bases se utiliza el método pow.
a = exp(2) # Aproximadamente 7.39
Redondea s
por debajo, devolviendo el número entero más grande que no es mayor que s
.
a = floor(2.45) # a es 2.0
a = floor(2.99) # a es 2.0
a = floor(-2.99) # a es -3.0
Véase también ceil, round, stepify, y int.
Nota: Este método devuelve un valor en punto flotante. Si necesita uno entero y s
no lo es, use int(s)
directamente.
Devuelve el resto en punto flotante de a/b
, manteniendo el signo de a
.
r = fmod(7, 5.5) # r es 1.5
Para la operación módulo de números enteros, utilice el operador %.
Devuelve el módulo en punto flotante de a/b
que envuelve por igual en positivo y en negativo.
for i in 7:
var x = 0.5 * i - 1.5
print("%4.1f %4.1f %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])
Produce:
-1.5 -0.0 0.0
-1.0 -1.0 0.5
-0.5 -0.5 1.0
0.0 0.0 0.0
0.5 0.5 0.5
1.0 1.0 1.0
1.5 0.0 0.0
Devuelve una referencia a la función especificada funcname
en el nodo instance
. Como las funciones no son objetos de primera clase en GDscript, usa funcref
para almacenar una FuncRef en una variable y llamarla después.
func foo():
return("bar")
a = funcref(self, "foo")
print(a.call_func()) # Imprime bar
Array get_stack ( )
Devuelve un conjunto de diccionarios que representan la pila de llamadas actual.
func _ready():
foo()
func foo():
bar()
func bar():
print(get_stack())
# Esto imprimirá
[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]
Devuelve el hash entero de la variable pasada.
print(hash("a)) # Imprime 177670
Dictionary inst2dict ( Object inst )
Devuelve la instancia pasada convertida en un diccionario (útil para serializar).
var foo = "bar"
func _ready():
var d = inst2dict(self)
print(d.keys())
print(d.values())
Imprime:
[@subpath, @path, foo]
[, res://test.gd, bar]
Devuelve el objeto que corresponde a instance_id
. Todos los Objetos tienen un ID de instancia único.
var foo = "bar"
func _ready():
var id = get_instance_id()
var inst = instance_from_id(id)
print(inst.foo) # Prints bar
Devuelve un valor normalizado considerando el rango dado. Esto es lo contrario a lerp.
var mitad = lerp(20, 30, 0.75)
# `mitad` es ahora 27.5.
# Ahora, vamos a suponer que hemos olvidado el ratio original y queremos volver a atras.
var ratio = inverse_lerp(20, 30, 27.5)
# `ratio` es ahora 0.75.
Devuelve true
si a
y b
son aproximadamente iguales entre sí.
Aquí, aproximadamente igual significa que a
y b
están dentro de una pequeña épsilon interna de cada uno, que escala con la magnitud de los números.
Los valores infinitos del mismo signo se consideran iguales.
Devuelve si s
es un valor de infinito (positivo o negativo).
Devuelve si instance
es un objeto válido (por ejemplo, no ha sido borrado de la memoria).
Devuelve si s
es un valor NaN ("Not a Number" o inválido).
Devuelve true
si s
es cero o casi cero.
Este método es más rápido que el uso de is_equal_approx con un valor como cero.
Devuelve la longitud de la variable var
. La longitud es el número de caracteres de la cadena, el número de elementos de la matriz, el tamaño del diccionario, etc.
Nota: Genera un error fatal si la variable no puede proporcionar una longitud.
a = [1, 2, 3, 4]
len(a) # Devuelve 4
Interpola linealmente entre dos valores por un valor normalizado. Esto es la función inversa de inverse_lerp.
Si los argumentos from
y to
son de tipo int o float, el valor devuelto es un float.
Si ambos son del mismo tipo de vector (Vector2, Vector3 o Color), el valor devuelto será del mismo tipo ,(lerp
entonces llama al método linear_interpolate
del tipo de vector).
lerp(0, 4, 0.75) # Devuelve 3.0
lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Devuelve Vector2(2, 3.5)
Interpola linealmente entre dos ángulos (en radianes) por un valor normalizado.
Similar al lerp, pero interpola correctamente cuando los ángulos se envuelven alrededor de TAU.
extends Sprite
var elapsed = 0.0
func _process(delta):
var min_angle = deg2rad(0.0)
var max_angle = deg2rad(90.0)
rotation = lerp_angle(min_angle, max_angle, elapsed)
elapsed += delta
Convierte la energia lineal a decibelios (audio). Esto puede ser utilizado para implementar sliders de volumen que se comporten de forma esperada (ya que el volumen no es lineal). Ejemplo:
# "Slider" se refiere a un nodo que hereda Rango de un HSlider o VSlider.
# Su rango debe ser configurado desde 0 a 1.
# Cambia el nombre del bus if quieres cambiar el volumen de solo un bus especifico.
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear2db($Slider.value))
Carga un recurso del sistema de archivos ubicado en path
. El recurso es cargado en la llamada al método (a menos que ya esté referenciado en otro lugar, por ejemplo, en otro script o en la escena), lo que puede causar un ligero retraso, especialmente al cargar escenas. Para evitar retrasos innecesarios al cargar algo varias veces, almacena el recurso en una variable o utiliza preload.
Nota: Las rutas de los recursos pueden obtenerse haciendo clic derecho sobre un recurso en la pestaña FileSystem y eligiendo "Copy Path" o arrastrando el archivo de la pestaña FileSystem al script.
# Carga una escena llamada main localizada en la raíz del directorio del proyecto y la almacena en caché en una variable.
var main = load("res://main.tscn") # main contendrá un recurso PackedScene.
Importante: La ruta debe ser absoluta, una ruta local solo devolverá null
.
Este método es una versión simplificada de ResourceLoader.load, el cual puede ser usado en escenarios más avanzados
Logaritmo natural. La cantidad de tiempo necesaria para alcanzar un cierto nivel de crecimiento continuo.
Nota: Esto no es lo mismo que la función "log" de la mayoría de las calculadoras, que utiliza un logaritmo de base 10.
log(10) # Devuelve 2.302585
Nota: El logaritmo de 0
devuelve -inf
, mientras que los valores negativos devuelven -nan
.
Devuelve el máximo de dos valores.
max(1, 2) # Devuelve 2
max(-3.99, -4) # Devuelve -3.99
Devuelve el mínimo de dos valores.
min(1, 2) # Devuelve 1
min(-3.99, -4) # Devuelve -4
Mueve from
hacia to
por el valor delta
.
Usa un valor negativo de delta
para mover el valor en sentido opuesto.
move_toward(5, 10, 4) # Devuelve 9
move_toward(10, 5, 4) # Devuelve 6
move_toward(10, 5, -1.5) # Devuelve 11.5
Devuelve la potencia igual o mayor de 2 para el entero value
.
En otras palabras, devuelve el valor más pequeño a
donde a = pow(2, n)
tal que value <= a
para algún entero no negativo n
.
nearest_po2(3) # Devuelve 4
nearest_po2(4) # Devuelve 4
nearest_po2(5) # Devuelve 8
nearest_po2(0) # Devuelve 0 (esto puede no ser lo que esperas)
nearest_po2(-1) # Devuelve 0 (esto puede no ser lo que esperas)
ADVERTENCIA: Debido a la forma en que se implementa, esta función devuelve 0
en lugar de 1
para valores no positivos de value
(en realidad, 1 es la potencia entera más pequeña de 2).
Devuelve un entero representando el caracter Unicode char
a = ord("A") # a es 65
a = ord("a") # a es 97
a = ord("€") # a es 8364
Este es el metodo inverso a char.
Parsea el texto de JSON a una variable. (Use typeof para comprobar si el tipo de la variable es el que usted espera.)
Nota: La especificación JSON no define tipos enteros o flotantes, sino sólo un tipo number. Por lo tanto, el análisis sintáctico de un texto JSON convertirá todos los valores numéricos a tipo float.
Nota: Los objetos JSON no conservan el orden de las claves como los diccionarios Godot, por lo tanto, no se debe confiar en que las claves estén en un cierto orden si se construye un diccionario a partir de JSON. Por el contrario, los conjuntos de JSON conservan el orden de sus elementos:
var p = JSON.parse('["hola", "mundo", "!"]')
if typeof(p.result) == TYPE_ARRAY:
print(p.result[0]) # Imprime 'Hola'
else:
print("resultados inesperados")
Ver también JSON para una forma alternativa de analizar el texto de JSON.
Convierte un punto 2D expresado en el sistema de coordenadas polares (una distancia del origen r
y un ángulo th
) en el sistema de coordenadas cartesianas (ejes X e Y).
Devuelve el módulo entero de a/b
que envuelve por igual en positivo y negativo.
for i in range(-3, 4):
print("%2d %2d %2d" % [i, i % 3, posmod(i, 3)])
Produce:
-3 0 0
-2 -2 1
-1 -1 2
0 0 0
1 1 1
2 2 2
3 0 0
Devuelve el resultado de base
elevado a la potencia exp
.
pow(2, 5) # Devuelve 32.0
Devuelve un Resource del sistema de archivos ubicado en path
. El recurso se carga durante el análisis sintáctico del script, es decir, se carga con el script y preload actúa efectivamente como una referencia a ese recurso. Tenga en cuenta que el método requiere una ruta constante. Si desea cargar un recurso de una ruta dinámica/variable, utilice load.
Nota: Las rutas de los recursos se pueden obtener haciendo clic con el botón derecho del ratón en un recurso del Panel de activos y eligiendo "Copiar ruta" o arrastrando el archivo desde el muelle del Sistema de archivos al script.
# Instancia una escena
var diamante = preload("res://diamante.tscn").instance()
void print ( ... ) vararg
convierte uno o mas argumentos de cualquior tipo a una cadena de texto de la mejor manera posible, y los muestra en la consola.
a=[1,2,3]
print("a,"=",a)#Muestra a=[1,2,3]
Note: considera usar push_error y push_warning para mostrar errores mensajes de advertencia en vez de print. esto los distingue de mensajes en la consola usados por motivos de depuración, mientras muestra un trazo de cuando un error o advertencia se muestra.
void print_debug ( ... ) vararg
Como print, pero imprime sólo cuando se usa en modo de depuración.
void print_stack ( )
Imprime una registro de la pila en la ubicación del código, sólo funciona cuando se ejecuta con el depurador activado.
La salida en la consola se vería algo así:
Frame 0 - res://test.gd:16 in function '_process'
void printerr ( ... ) vararg
Imprime uno o más argumentos a strings de la mejor manera posible a la línea de error estándar.
printerr("Imprime a stderr")
void printraw ( ... ) vararg
Imprime uno o más argumentos a strings de la mejor manera posible a consola . No se añade ninguna línea nueva al final.
printraw("A")
printraw("B")
# Imprime AB
Nota: Debido a las limitaciones con la consola incorporada de Godot, esto sólo imprime a la terminal. Si necesita imprimir en el editor, utilice otro método, como print.
void prints ( ... ) vararg
Imprime uno o más argumentos en la consola con un espacio entre cada argumento.
prints("A", "B", "C") # Imprime A B C
void printt ( ... ) vararg
Imprime uno o más argumentos en la consola con un tabulador entre cada argumento.
printt("A","B","C") # Imprime A\ B\ C
void push_error ( String message )
Envía un mensaje de error al depurador incorporado de Godot y al terminal del sistema operativo.
push_error("test error) # Imprime "test error" al depurador y a la terminal como una llamada de error
Nota: Los errores imprimidos de esta manera no pausaran la ejecución del proyecto. Para imprimir un mensaje de error y pausar la ejecución del proyecto en compilaciones de depuración, usa assert(false, "test error")
en su lugar.
void push_warning ( String message )
Envía un mensaje de aviso al depurador incorporado de Godot y al terminal del sistema operativo.
push_warning("test warning) # Imprime "test warning" al depurador y a la terminal como una llamada de aviso.
Convierte un ángulo expresado en radianes a grados.
rad2deg(0.523599) # Devuelve 30.0
Rango aleatorio de cualquier numero real entre from
y to
.
prints(rand_range(0, 1), rand_range(0, 1)) # Imprime dos numeros aleatorios
Aleatorio desde la semilla: se pasa una semilla
, y se devuelve un array con el número y la nueva semilla. "Semilla" aquí se refiere al estado interno del generador de números pseudo aleatorios. El estado interno de la implementación actual es de 64 bits.
float randf ( )
Devuelve un aleatorio real en el intervalo [0, 1]
randf() # Devuelve un aleatorio entre 0 y 1 como 0.375671
int randi ( )
Devuelve un entero aleatorio sin signo de 32 bits. Utiliza el resto para obtener un valor aleatorio en el intervalo [0, N - 1]
(donde N es menor que 2^32).
randi() # Devuelve un entero aleatorio entre 0 y 2^32 - 1.
randi() % 20 # Devuelve un entero aleatorio entre 0 y 19.
randi() % 100 # Devuelve un entero aleatorio entre 0 y 99.
randi() % 100 + 1 # Devuelve un entero aleatoria entre 1 y 100
void randomize ( )
Aleatoriza la semilla (o el estado interno) del generador de números aleatorios. La implementación actual se realimenta usando un número basado en el tiempo.
func_ready():
\ randomize()
Array range ( ... ) vararg
Devuelve una formación con el rango dado. El método range()
puede tener un argumento N
(0 a N
- 1), dos argumentos (initial
, final - 1
) o tres argumentos (initial
, final - 1
, increment
). increment
puede ser negativo, y en tal caso, final - 1
llega a ser final + 1
. También, el valor incial debe ser mayor que el valor final para que se ejecute la iteración.
Devuelve una formación vacía si el rango no es válido (por ejemplo, range(2, 5, -1)
o range(5, 5, 1)
).
print(range(4))
print(range(2, 5))
print(range(0, 6, 2))
Salida:
[0, 1, 2, 3]
[2, 3, 4]
[0, 2, 4]
Para iterar sobre un Array al revés, utilice:
var array = [3, 6, 9]
var i := array.size() - 1
while i >= 0:
print(array[i])
i -= 1
Salida:
9
6
3
Transforma un value
entre los rangos (istart, istop]
a los rangos [ostart, ostop]
.
range_lerp(75, 0, 100, -1, 1) # Devuelve 0.5
Rounds s
to the nearest whole number, with halfway cases rounded away from zero.
a = round(2.49) # a is 2.0
a = round(2.5) # a is 3.0
a = round(2.51) # a is 3.0
See also floor, ceil, stepify, and int.
void seed ( int seed )
Establece la semilla para el generador de números aleatorios.
mi_semilla = "Godot Rocks"
seed(mi_semilla.hash())
Devuelve el signo de s
: -1 o 1. Devuelve 0 si s
es 0.
sign(-6) # Devuelve -1
sign(0) # Devuelve 0
sign(6) # Devuelve 1
Devuelve el seno de un angulo s
en radianes.
sin(0.523599) # Devuelve 0.5
Devuelve el seno hiperbolico de s
.
a = log(2.0) # Devuelve 0.693147
sinh(a) # Devuelve 0.75
Returns the result of smoothly interpolating the value of s
between 0
and 1
, based on the where s
lies with respect to the edges from
and to
.
The return value is 0
if s <= from
, and 1
if s >= to
. If s
lies between from
and to
, the returned value follows an S-shaped curve that maps s
between 0
and 1
.
This S-shaped curve is the cubic Hermite interpolator, given by f(y) = 3*y^2 - 2*y^3
where y = (x-from) / (to-from)
.
smoothstep(0, 2, -5.0) # Returns 0.0
smoothstep(0, 2, 0.5) # Returns 0.15625
smoothstep(0, 2, 1.0) # Returns 0.5
smoothstep(0, 2, 2.0) # Returns 1.0
Compared to ease with a curve value of -1.6521
, smoothstep returns the smoothest possible curve with no sudden changes in the derivative. If you need to perform more advanced transitions, use Tween or AnimationPlayer.
Comparison between smoothstep() and ease(x, -1.6521) return values
Returns the square root of s
, where s
is a non-negative number.
sqrt(9) # Returns 3
Note: Negative values of s
return NaN. If you need negative inputs, use System.Numerics.Complex
in C#.
Returns the position of the first non-zero digit, after the decimal point. Note that the maximum return value is 10, which is a design decision in the implementation.
n = step_decimals(5) # n is 0
n = step_decimals(1.0005) # n is 4
n = step_decimals(0.000000005) # n is 9
Snaps float value s
to a given step
. This can also be used to round a floating point number to an arbitrary number of decimals.
stepify(100, 32) # Returns 96.0
stepify(3.14159, 0.01) # Returns 3.14
See also ceil, floor, round, and int.
String str ( ... ) vararg
Converts one or more arguments of any type to string in the best way possible.
var a = [10, 20, 30]
var b = str(a);
len(a) # Returns 3
len(b) # Returns 12
Convierte una string formateada que fue devuelta por el var2str al valor original.
a = '{ "a": 1, "b": 2 }'
b = str2var(a)
print(b["a"]) # Imprime 1
Devuelve la tangente del ángulo s
en radianes.
tan(deg2rad(45)) # Devuelve 1
Returns the hyperbolic tangent of s
.
a = log(2.0) # a is 0.693147
b = tanh(a) # b is 0.6
Convierte una Variant var
en texto JSON y devuelve el resultado. Es útil para serializar datos para almacenarlos o enviarlos a través de la red.
# Los dos números de abajo son números enteros.
a = { "a": 1, "b": 2 }
b = to_json(a)
print(b) # {"a":1, "b":2}
# Los dos números de arriba son reales, aunque se muestren sin decimales.
Nota: La especificación JSON no define los tipos enteros o de reales, sino sólo un tipo número. Por lo tanto, al convertir un texto de Variant a JSON se convertirán todos los valores numéricos a tipos float.
Véase también JSON para una forma alternativa de convertir un texto Variant a JSON.
Returns whether the given class exists in ClassDB.
type_exists("Sprite") # Returns true
type_exists("Variant") # Returns false
Devuelve el tipo interno del objeto variable dado, usando los valores Variant.Type.
p = parse_json('["a", "b", "c"]')
if typeof(p) == TYPE_ARRAY:
print(p[0]) # Imprime a
else:
print("resultados inesperados")
Comprueba que json
es un dato JSON válido. Devuelve una string vacía si es válida, o un mensaje de error en caso contrario.
j = to_json([1, 2, 3])
v = validate_json(j)
if not v:
print("JSON válido")
else:
prints("JSON inválido", v)
PoolByteArray var2bytes ( Variant var, bool full_objects=false )
Codifica un valor variable en un array de bytes. Cuando full_objects
es true
se permite la codificación de objetos (y puede potencialmente incluir código).
Convierte una variable var
en una cadena formateada que puede ser analizada posteriormente utilizando str2var.
a = { "a": 1, "b": 2 }
print(var2str(a))
prints
{
"a": 1,
"b": 2
}
Devuelve una referencia débil a un objeto.
Una referencia débil a un objeto no es suficiente para mantenerlo vivo: cuando las únicas referencias que quedan de un referencia son referencias débiles, el garbage collector es libre para destruir la referencia y reutilizar su memoria para otra cosa. Sin embargo, hasta que el objeto sea realmente destruido la referencia débil puede devolver el objeto aunque no haya referencias fuertes a él.
Convierte el real value
entre min
y max
.
Utilizado para crear un comportamiento similar al de un bucle o superficies infinitas.
# Bucle infinito entre 5.0 y 9.9
valor = wrapf(valor + 0.1, 5.0, 10.0)
# Rotación infinita (en radianes)
ángulo = wrapf(ángulo + 0.1, 0.0, TAU)
# Rotación infinita (en radianes)
ángulo = wrapf(ángulo + 0.1, -PI, PI)
Nota: Si min
es 0
, esto equivale a fposmod, así que prefiera usar eso en su lugar.
wrapf
es más flexible que utilizar el enfoque de fposmod, ya que le da al usuario el control sobre el valor mínimo.
Convierte el numero entero value
que esta entre min
y max
.
Usado para crear comportamientos tipo bucle o superficies infinitas.
# Bucle infinito entre 5 y 9
fotograma = wrapi(fotograma + 1, 5, 10)
# El resultado es -2
var resultado = wrapi(-6, -5, -1)
Nota: Si min
es 0
, esto equivale a posmod, así que prefiera usar eso en su lugar.
wrapi
es más flexible que el enfoque de posmod, ya que le da al usuario el control sobre el valor mínimo.
GDScriptFunctionState yield ( Object object=null, String signal="" )
Detiene la ejecución de la función y devuelve el estado suspendido actual a la función que lo ha llamado.
Desde el llamador, llama GDScriptFunctionState.resume al estado para reanudar la ejecución. Esto invalida el estado. Dentro de la función reanudada, yield()
devuelve lo que se pasó a la llamada de la función resume()
.
Si se pasa un objeto y una señal, la ejecución se reanuda cuando el objeto emite la señal dada. En este caso, yield()
devuelve el argumento pasado a emit_signal()
si la señal toma un solo argumento, o un array que contiene todos los argumentos pasados a emit_signal()
si la señal toma múltiples argumentos.
También puedes usar yield
para esperar a que una función termine:
func _ready():
yield(cuentaAtras(), "completed") # esperando por la funcion cuentaAtras() a que termine
print('Preparado')
func cuentaAtras():
yield(get_tree(), "idle_frame") # devuelve un objeto GDScriptFunctionState a _ready()
print(3)
yield(get_tree().create_timer(1.0), "timeout")
print(2)
yield(get_tree().create_timer(1.0), "timeout")
print(1)
yield(get_tree().create_timer(1.0), "timeout")
# prints:
# 3
# 2
# 1
# Ready
Al ceder una función, la señal completed
se emitirá automáticamente cuando la función retorne. Por lo tanto, puede utilizarse como parámetro signal
del método yield
para reanudar.
Para ceder una función, la función resultante también debe devolver un GDScriptFunctionState
. Observe yield(get_tree(), "idle_frame")
del ejemplo anterior.