¿Cómo cambiar la collision_layer y collision_mask en godot?
Los CollisionObject en Godot tienen dos propiedades que indican que objetos van a interactuar entre sí. Estas propiedades son:
- Capa de colisión (collision_layer)
- Máscara de colisión (collision_mask)
¿Qué es la propiedad collision_layer?
La collision layer o capa de colisión es la capa en la que está el objeto, por defecto todos los objetos están en la capa 1 y pueden tener hasta 32 capas
¿Qué es la propiedad collision_mask?
La collision mask o máscara de colisión es la capa o capas con las que el objeto va a colisionar. Por ejemplo, un objeto con la máscara de colisión en 3 solo va a colisionar con los objetos que se encuentren en la capa de colisión 3
¿Cómo cambiar la collision_layer con código en Godot?
La propiedad collision_layer recibe un entero como valor, en este entero debemos escribir el valor del bit de la capa que queramos asignar. Por ejemplo, si queremos que asignar la capa 4 debemos de asignar el valor 8
¿Cómo se calcula el valor del bit?
El valor del bit lo obtenemos elevando dos a la potencia del numero de bit. Por ejemplo, el valor del bit 0 es 2 elevado a 0 = 1. El valor del bit 5 es 2 elevado a 5 = 32
Para elevar un numero a otro en godot, podemos utilizar la función pow(int,int) que eleva el primer parametro al segundo.
Pero, ¿cómo asigno varias capas?
Para asignar varias capas, solo tienes que hacer la suma del valor del bit de cada capa, el valor del bit lo podemos obtener haciendo la potencia de dos del número de bit. Por ejemplo, para sumar las capas en el bit 0, 3 y 4 escribiriamos:
collision_layer = pow(2,0) + pow(2,3) + pow(2,4)
¡Cuidado! ¡No te confundas! Las capas y las máscaras en godot empiezan desde el número 1 pero los bits empiezan desde 0. Así, el bit de la capa 1 es 0 y el bit de la capa 10 es 9. Si en el código quieres utilizar el número de la capa en vez del número de bit, puedes restarle uno en el pow(). Por ejemplo en la capa 1, pow(2,1-1). En la capa 3, pow(2,3-1)
Existen otras formas de cambiar la capa o la máscara de colisión en Godot. Podemos expresarlo en hexadecimal o en binario, pero me parecieron más difíciles de leer, aún así si os interesa está explicado en la documentación de Godot
Comentarios
Publicar un comentario