25. CLASE COLLIDER (I)
Esta es la clase base para todos los tipos de colliders (que en castellano traduciríamos por "colisionadores"). Las clases BoxCollider, SphereCollider, CapsuleCollider y MeshCollider derivan de ella.
Un collider vendría a ser la estructura que hace sólidos a los objetos. Seleccionemos en Unity la esfera. En el inspector observamos que tiene un Sphere Collider, que no es más que un collider con forma de esfera. Si desmarcamos el checkbox de dicho collider y le damos al play, automáticamente la esfera deja de ser sólida y, por efecto de la gravedad que le da el rigidbody, atraviesa el suelo y cae.
Podemos seleccionar el cubo. Obviamente, el cubo no tiene una sphere collider, sino una box collider. Y si importáramos un gameobject capsule, tendría un capsule Collider.
El problema viene cuando importamos un game object que no tiene una de estas formas primitivas. A veces se puede "encajar" una capsule collider en un árbol, o una box collider en un coche. A veces no necesitamos que el colisionador de un objeto coincida al 100% con dicho objeto y uno de estos colliders básicos nos pueden hacer el apaño.
Pero hay veces en que, bien por la importancia del game object en el juego, bien por la forma compleja que tiene dicho game object, bien en la mayoría de casos por ambas cosas (pensemos en el ninja protagonista de nuestro juego, por ejemplo) necesitamos un collider que sea completamente fiel a la forma del gameobject. Para ello tenemos el mesh collider (que estudiaremos en breve), que es meramente la malla del objeto convertida en la estructura sólida del mismo que interactúa con el resto del mundo.
Existe bastante confusión entre los nuevos en Unity respecto la diferencia entre un collider y un rigidbody. Un collider, como decimos, es meramente la superficie de nuestro objeto. Un rigidbody en cambio implica la aplicación de las leyes físicas a dicho objeto. Un objeto puede tener un collider y no un rigidbody (chocará con otros objetos, aunque no podremos controlar sus reacciones a las colisiones y será Unity quien se encargue de ellas automáticamente), y puede tener un rigidbody y no un collider (aunque entre otras cosas tendremos que desactivarle la gravedad, para que no atraviese los suelos). Obviamente, un objeto puede tener un rigidbody y un collider, y de hecho Unity recomienda que si tu objeto es previsible que vaya a intervenir en muchas colisiones, además de un collider es recomendable añadirle un rigidbody kinemático.
Vamos a ello:
VARIABLES:
enabled:
var enabled : boolean
Si el collider está habilitado (true), colisionará con otros colliders. Se corresponde al checkbox que está en el inspector en el apartado del collider.
attachedRididbody:
var attachedRigidbody : Rigidbody
Esta variable hace referencia al rigidbody vinculado a este collider, y permite acceder a él. Devuelve nulo si el collider no tiene rigidbody.
Los colliders son automáticamente conectado al rigidbody relacionado con el mismo game object o con algún game object padre. Esto es, por ejemplo el rigidbody que le añadimos en su momento al cubo automáticamente quedó vinculado al box collider de éste. Probémoslo rehaciendo MiPrimerSript:
function FixedUpdate() {
collider.attachedRigidbody.AddForce(0,15,0);
}
Salvamos, nos aseguramos de que el script siga vinculado al cubo, y le damos al play.
isTrigger:
var isTrigger : boolean
Si esta variable está habilitada (true) el collider se convierte en un trigger (lo podríamos traducir por "desencadenante" o "disparador"). Un trigger no colisiona con rigidbodies, y en su lugar envía los mensajes OnTriggerEnter, OnTriggerExit y OnTriggerStay (que estudiaremos al final de la clase) cuando un rigidbody entra o sale de él. De esta manera nos permite a nosotros diseñar de manera específica su comportamiento o las consecuencias de entrar en contacto con un trigger (pensemos en una puerta que nos lleva a otra dimensión, que se puede atravesar pero dispara un evento que nos teletransporta, por ejemplo)
material:
var material : PhysicMaterial
El material usado por el collider. Si el material es compartido por varios colliders, al ser asignado a esta variable se hará una copia de dicho material que le será asignada al collider.
La variable es del tipo PhysicMaterial, que como en su momento estudiaremos es una clase que nos permite manejar aspectos de los materiales como la fricción o la capacidad de rebote y el grado de la misma.
sharedMaterial:
var sharedMaterial : PhysicMaterial
El material compartido de este collider. Modificando este material cambiaremos las propiedades de la superficie de todos los colliders que estén usando el mismo material. En muchos casos es preferible modificar en su lugar el Collider.material.
bounds:
var bounds : Bounds
Los límites/bordes del collider en coordenadas globales.
Con la tecnología de Blogger.
BUSCADOR
PÁSATE POR EL FORO
API DE UNITY
TEMAS
- 00_INTRODUCCION (3)
- 01_CLASE OBJECT (3)
- 02_ESTRUCTURA VECTOR3 (4)
- 03_CLASE TRANSFORM (7)
- 04_CLASE RIGIDBODY (8)
- 05_CLASE COLLIDER (2)
- 06_CLASE MESHCOLLIDER (1)
- 07_CLASE CHARACTERCONTROLLER (3)
- 08_CLASE RENDERER (2)
- 09_CLASE MESHFILTER (1)
- 10_CLASE JOINT (2)
- 11_CLASE HINGEJOINT (2)
- 12_CLASE SPRINGJOINT (1)
- 13_CLASE CHARACTERJOINT (1)
- 14_CLASE BEHAVIOUR (1)
- 15_CLASE MONOBEHAVIOUR (9)
- 16_CLASE CAMERA (6)
- 17_CLASE LIGHT (3)
- 18_CLASE MATERIAL (3)
- 19_CLASE CUBEMAP (1)
- 20_CLASE RENDERTEXTURE (3)
- 21_CLASE PARTICLEEMITTER (3)
- 22_CLASE MESH (2)
- 23_CLASE GAMEOBJECT (6)
- 24_CLASE SHADER (1)
- 25_CLASE PHYSICMATERIAL (1)
- 26_CLASE COMPONENT (1)
- 27_CLASE GUIELEMENT (1)
- 28_CLASE GUITEXT (2)
- 29_CLASE GUITEXTURE (1)
- 30_CLASE GUI (8)
- 31_CLASE GUILAYOUT (4)
- 32_CLASE TEXTURE (1)
- 33_CLASE TEXTURE2D (2)
- 34_CLASE INPUT (4)
- 35_ESTRUCTURA BOUNDS (1)
- 36_CLASE COLLISION (1)
- 37_CLASE CONTROLLERCOLLIDERHIT (1)
- 38_CLASE DEBUG (1)
- 39_CLASE EVENT (3)
- 40_CLASE GIZMOS (1)
- 41_CLASE LIGHTMAPSETTINGS (1)
- 42_ESTRUCTURA MATHF (3)
- 43_CLASE PHYSICS (2)
- 44_ESTRUCTURA QUATERNION (1)
- 45_CLASE RANDOM (1)
- 46_ESTRUCTURA RAY (1)
- 47_ESTRUCTURA RAYCASTHIT (1)
- 48_ESTRUCTURA RECT (1)
- 49_CLASE RENDERSETTINGS (1)
- 50_CLASE SCREEN (1)
- 51_CLASE TIME (1)
- 52. CLASE YIELDINSTRUCTION (1)
- MONOGRAFICOS (2)
ENTRADAS
-
▼
2011
(127)
-
▼
octubre
(121)
- 116. ESTRUCTURA RAYCASTHIT
- 115. ESTRUCTURA RAY
- 114. CLASE RANDOM
- 113. ESTRUCTURA QUATERNION
- 112. CLASE PHYSICS (y II)
- 111. CLASE PHYSICS (I)
- 110. ESTRUCTURA MATHF (y III)
- 109. ESTRUCTURA MATHF (II)
- 108. ESTRUCTURA MATHF (I)
- 107. CLASE LIGHTMAPSETTINGS
- 106. CLASE GIZMOS
- 105. CLASE EVENT (y III)
- 104. CLASE EVENT (II)
- 107. CLASE EVENT (I)
- 106. CLASE DEBUG
- 105. CLASE CONTROLLERCOLLIDERHIT
- 104. CLASE COLLISION
- 103. ESTRUCTURA BOUNDS
- 102. CLASE INPUT (y IV)
- 101. CLASE INPUT (III)
- 100. CLASE INPUT (II)
- 99. CLASE INPUT (I)
- 98. CLASE TEXTURE2D (y II)
- 97. CLASE TEXTURE2D (I)
- 96. CLASE TEXTURE
- 95. CLASE GUILAYOUT (y IV)
- 94. CLASE GUILAYOUT (III)
- 93. CLASE GUILAYOUT (II)
- 92. CLASE GUILAYOUT (I)
- 91. CLASE GUI (y VIII)
- 90. CLASE GUI ( VII)
- 89. CLASE GUI (VI)
- 88. CLASE GUI (V)
- 87. CLASE GUI (IV)
- 86. CLASE GUI (III)
- 85. CLASE GUI ( II)
- 84. CLASE GUI (I)
- 83. CLASE GUITEXTURE
- 82. CLASE GUITEXT (y II)
- 81. CLASE GUITEXT (I)
- 80. CLASE GUIELEMENT
- 79. CLASE COMPONENT
- 78. CLASE PHYSICMATERIAL
- 77. CLASE SHADER
- 76. CLASE GAMEOBJECT (y VI)
- 75. CLASE GAMEOBJECT (V)
- 74. CLASE GAMEOBJECT (IV)
- 73. CLASE GAMEOBJECT (III)
- 72. CLASE GAMEOBJECT (II)
- 71. CLASE GAMEOBJECT (I)
- 70. CLASE MESH (y II)
- 69. CLASE MESH (I)
- 68. CLASE PARTICLEEMITTER (y III)
- 67. CLASE PARTICLEEMITTER (II)
- 66. CLASE PARTICLEEMITTER (I)
- 65. CLASE RENDERTEXTURE (y III)
- 64. CLASE RENDERTEXTURE (II)
- 63. CLASE RENDERTEXTURE (I)
- 62. CLASE CUBEMAP
- 61. CLASE MATERIAL (y III)
- 60. CLASE MATERIAL (II)
- 59. CLASE MATERIAL (I)
- 58. CLASE LIGHT (y III)
- 57. CLASE LIGHT (II)
- 56. CLASE LIGHT (I)
- 55. CLASE CAMERA (VI)
- 54. CLASE CAMERA (V)
- 53. CLASE CAMERA (IV)
- 52. CLASE CAMERA (III)
- 51. CLASE CAMERA (II)
- 50. CLASE CAMERA (I)
- 49. CLASE MONOBEHAVIOUR (y IX)
- 48. CLASE MONOBEHAVIOUR (VIII)
- 47. CLASE MONOBEHAVIOUR (VII)
- 46. CLASE MONOBEHAVIOUR (VI)
- 45. CLASE MONOBEHAVIOUR (V)
- 44. CLASE MONOBEHAVIOUR (IV)
- 43. CLASE MONOBEHAVIOUR (III)
- 42. CLASE MONOBEHAVIOUR (II)
- 41. CLASE MONOBEHAVIOUR (I)
- 40. CLASE BEHAVIOUR
- 39. CLASE CHARACTERJOINT
- 38. CLASE SPRINGJOINT
- 37. CLASE HINGEJOINT (y II)
- 36. CLASE HINGEJOINT (I)
- 35. CLASE JOINT (y II)
- 34. CLASE JOINT (I)
- 33. CLASE MESHFILTER
- 32. CLASE RENDERER (y II)
- 31. CLASE RENDERER (I)
- 30. CLASE CHARACTERCONTROLLER (y III)
- 29. CLASE CHARACTERCONTROLLER (II)
- 28. CLASE CHARACTERCONTROLLER (I)
- 27. CLASE MESHCOLLIDER
- 26. CLASE COLLIDER (II)
- 25. CLASE COLLIDER (I)
- 24. CLASE RIGIDBODY (y VIII)
- 23. CLASE RIGIDBODY (VII)
- 22. CLASE RIGIDBODY (VI)
- 21. CLASE RIGIDBODY (V)
-
▼
octubre
(121)