buenas, estuve pensando que si tienes un room muy grande lleno de objetos solidos con los cuales el personaje principal colisiona,
entonces el evento colision con este objeto solido, del personaje principal va a estar iterando siempre entre todos aquellos objetos que existan para poder colisionar?, si es asi, no seria mejor establecer una funcionalidad para que colisione solamente en aquellos objetos solidos que estan dentro de la room, para ahorrar proceso?
cabe aclarar que desconozco a ciencia cierta la funcionalidad del evento colision con respecto a los objetos solidos en un room
Una solución o método que se usa en esos casos es desactivar las instancias que queden fuera de la view, para liberar carga del CPU. El evento de colisión no se llama si no se produce colisión, aunque internamente GMS debe revisar cuándo se produce una colisión, no sé exactamente cuánto cueste esto a nivel de CPU, pero no creo que sea mucho en la mayoría de los casos.
instance_deactivate_region()
http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/deactivating%20instances/instance_deactivate_region.html (http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/deactivating%20instances/instance_deactivate_region.html)
Otra cosa es dejar de rellenar con sólidos los espacios que el player nunca tocará (por ejemplo adentro de la paredes). (al menos que el player se bugee XD)
EDIT: También, usá !place_free(x,y) para colisionar con sólidos en vez de usar el evento de colisión. (Si le agregás el hspeed/vspeed, mejor)
Ejemplo:
if !place_free(x+hspeed,y+vspeed) then {
move_contact_solid(direction,12)
vspeed=0
}
EDIT2: Usá Sólidos grandes si podés. También podés simplificar la colisión de los sólidos, cambiandole la mask por square. También podés usar tiles.
gracias, y que piensan de checar las colisiones en el evento step, con aquellos objetos solidos que estan cercanos al personaje,
es decir, solamente checar y procesar aquellos objetos que se encuentren dentro de un espacio y linea de colision?
Cita de: somnus en Noviembre 25, 2014, 09:49:55 PM
gracias, y que piensan de checar las colisiones en el evento step, con aquellos objetos solidos que estan cercanos al personaje,
es decir, solamente checar y procesar aquellos objetos que se encuentren dentro de un espacio y linea de colision?
Línea de colisión? Ahí ya estás checando todos los sólidos. las soluciones que propusimos son mejores :P