Documente Academic
Documente Profesional
Documente Cultură
V2
Puntos a tratar
Cuerpos rgidos
Colisiones
Trazado de rayos
Sensores
Materiales fsicos
Uniones
Personajes
Ragdolls
Videojuegos II
V2
Videojuegos II
V2
Cuerpos rgidos
Para que un objeto se someta a la simulacin fsica aadiremos un
componentes Rigidbody
Rigidbody 2D en el caso del motor 2D
Videojuegos II
V2
Colisiones
Para que un cuerpo pueda colisionar con otros debemos aadir
un componente de tipo collider
Existen distintos tipos de collider segn la forma del objeto
Videojuegos II
V2
Deteccin de colisiones
Cuando un cuerpo incorpore un componente collider se le
notificarn las colisiones con otros cuerpos
Podemos implementar en su script los siguiente mtodos
void OnCollisionEnter (Collision collision) {
...
}
void OnCollisionStay (Collision collision) {
...
}
void OnCollisionExit (Collision collision) {
...
}
V2
Datos de la colisin
Podemos obtener datos del cuerpo con el que colisionamos
Datos del objeto, del cuerpo rgido, velocidad relativa,etc
void OnCollisionEnter (Collision collision) {
if(collision.gameObject.tag == bala"
&& collision.relativeVelocity>100) {
Destroy(this);
}
}
Videojuegos II
V2
Trazado de rayos
Podemos trazar rayos para detectar si hay algn objeto en la
direccin del rayo
Si llamamos a Raycast sobre un objeto collider, slo detectar
dicho collider (til cuando busquemos un objeto concreto)
Nos proporciona la normal del contacto con el rayo
if (Input.GetMouseButton(0)) {
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (collider.Raycast(ray, out hit, 100.0F)) {
rigidbody.AddForce(-hit.normal*10, ForceMode.Impulse);
}
}
V2
Sensores
Podemos crear sensores marcando la propiedad isTrigger sobre el
collider
Videojuegos II
V2
Respuesta al sensor
En el script podemos recibir notificaciones cuando algn objeto
entra en el sensor
void OnTriggerEnter (Collider other) {
...
}
void OnTriggerStay (Collider other) {
...
}
void OnTriggerExit (Collider other) {
...
}
Videojuegos II
10
V2
Cinemtico
Incorpora un componente Collider
Incorpora un componente Rigidbody con la propiedad is Kinematic
Dinmico
Incorpora un componente Collider
Incorpora un componente Rigidbody sin la propiedad is Kinematic
Videojuegos II
11
V2
Contactos detectados
En el caso de las colisiones, el motor detectar
Colisiones entre un cuerpo dinmico y cualquier otro cuerpo
Es decir, no se detectarn colisiones entre cuerpos cinemticos y
estticos, al menos uno de ellos debera ser dinmico
Videojuegos II
12
V2
Layering
Videojuegos II
13
V2
Por defecto
0.02 (50fps)
Por ejemplo
void Start () {
Time.fixedDeltaTime = 0.3;
}
Videojuegos II
14
V2
Aplicacin de fuerzas
Podemos aplicar una fuerza o impulso lineal a un cuerpo rgido
void FixedUpdate() {
GetComponent<Rigidbody>().AddForce(new Vector3(0,1,0), ForceMode.Force);
}
Videojuegos II
15
V2
Interpolacin de quaternions
GetComponent<Rigidbody>().rotation = Quaternion.Lerp(
GetComponent<Rigidbody>().rotation,
new Quaternion.Euler(30, 0, 90),
0.5);
Quaternion a partir
de rotar 90 en Z,
30 en X, y 0 en Y
(en este orden)
16
V2
Uniones
Podemos definir uniones entre cuerpos rgidos o con puntos fijos
Se crean aadiendo componentes de tipo Joint
Videojuegos II
17
V2
Material de colisin
Podemos definir los materiales de colisin como assets
Asset > Create > Physic Material
Videojuegos II
18
V2
Videojuegos II
19
V2
Videojuegos II
20
V2
Ragdolls
El cuerpo est formado por una serie de huesos
Cada hueso se representa por un cuerpo de tipo cpsula
Videojuegos II
21
V2
Preguntas...?
Videojuegos II
22