GKGoal Evita Obstáculos Límites

Parece que tengo dificultades para mantener mis nodos de sprite dentro de un límite de map que he configurado de la siguiente manera:

Tengo un SKNode *enemy que se mueve alnetworkingedor de un SKScene por objectives y comportamientos cortesía de GameplayKit desde iOS 9. Actualmente, el nodo se GKPolygonObstacle y evita los obstáculos que se definen GKPolygonObstacle objects GKPolygonObstacle . Tengo mi máscara de bits configurada para que cualquier obstáculo se considere como una panetworking de categoría, a la que se le dice que colisione con el nodo (AKA no permite pasar).

En mi didBeginContact:(SKPhysicsContact *)contact manejo estas colisiones. Todo funciona exactamente como estaba planeado y no hay problemas al mover manualmente a este enemigo.

Sin embargo , el problema comienza cuando el enemigo camina por la escena a través de un SKGoal *wanderGoal configurado como

  // Low --> 0.5 Lowest --> 0.25 enemy.wanderGoal = [GKGoal goalToWander:low]; [enemy.agent.behavior setWeight:lowest forGoal:enemy.wanderGoal]; // Add obstacles to avoid for each of the inner map nodes // that act as impassible areas for the enemy to pass through. NSArray *obstacles = [SKNode obstaclesFromNodePhysicsBodies:innerMapArray]; /** This goal does not change --> enemies will ALWAYS avoid the obstacles in the level map. This should always be set to the highest priority of the enemy goals */ enemy.avoidGoal = [GKGoal goalToAvoidObstacles:obstacles maxPnetworkingictionTime:10]; // Highest --> 250 [enemy.agent.behavior setWeight:highest forGoal:enemy.avoidGoal]; 

El enemigo se mueve random como se esperaba, y parece evitar los obstáculos la mayor parte del time … sin embargo, en la ocasión, el enemigo de hecho atraviesa la barrera del map. Permítanme ampliar esto:

La barrera del map es esencialmente un rectángulo, y he configurado 2 nodos que actúan como una capa que representa la mitad izquierda y la mitad derecha de esta forma. Estos nodos tienen un grosor de 100 puntos, por lo que no son simplemente CGPath sino forms. Ellos actúan como estos dos paréntesis actúan: [] (mis seres queridos están al ras al tacto en el medio).

Mi pregunta es tal:

  • ¿Cómo puedo evitar que el enemigo atraviese estos obstáculos con el uso de la física con las categorías de máscara de bits o con el comportamiento de la meta? (O ambos juntos)

Entiendo que mientras que un GKGoal es un comportamiento sugerido, no garantiza que se scope este objective (pero puede estar ~ 95% seguro de que no sucederá como lo muestra el AgentesCatálogo de Apple ). Pero , lo que no entiendo es por qué el enemigo no simplemente "desliza" a lo largo del borde de la frontera, ya que el objective le dice que intente "pasar" a través de tal límite.

Este comportamiento "deslizante" ocurre cuando muevo manualmente al enemigo alnetworkingedor de la escena, y cuando bash moverlo, pasa un límite que se considera un obstáculo, se desliza hacia la dirección en la que lo estoy moviendo (al igual que cualquier videojuego hace eso tiene límites de map).

ASI QUE

Si alguien puede ayudarme a evitar que esto ocurra / explique cómo acercarse para evitar que el enemigo pase por estas áreas (supuestamente) "impasibles", estaría muy agradecido.

FYI: Si no está claro con qué estoy describiendo / cómo he creado algún object, pregunte y le proporcionaré más información para ayudarlo.