Uses the Agents system in GameplayKit to let the characters in a game move themselves according to high-level goals. This sample demonstrates several of the individual goals that an agent can perform, such as moving to a target, avoiding obstacles, and following a predefined path. AgentsCatalog also shows how to tie multiple goals together to create more complex behaviors, such as making a group of agents seek a common target while moving together as a flock.
Use the toolbar to switch between eight scenes, each of which demonstrates one or more of the goals available in GameplayKit's agent simulation. In each scene, a circle with an inscribed triangle represents an agent. Agents whose triangle is white can be controlled the mouse (OS X) or touch (iOS) input -- click or touch and drag and the agent will follow the mouse or touch position.
This project uses two shared classes to run the GameplayKit agent simulation for display in a SpriteKit scene:
AAPLAgentNodeis a SpriteKit node that owns aGKAgent2Dobject and displays a visual representation of the agent. By adopting theGKAgentDelegateprotocol, the node can automatically update its position and rotation in the scene to match the state of the agent.AAPLGameSceneis the base class for the eight demonstration scene that provides two key features for each:- Using a component system to include all of the scene's agents in SpriteKit's per-frame
update:cycle - Tracking mouse or touch events with an invisible agent so that agents in each scene can follow the mouse or touch location.
- Using a component system to include all of the scene's agents in SpriteKit's per-frame
The eight scene classes demonstrate various ways to use GKGoal and GKBehavior objects to motivate an agent's movement:
AAPLSeekScene: The "player" agent follows the mouse/touch location. (This behavior is the basis for more complex behaviors in several of the other scenes.)AAPLWanderScene: An agent wanders aimlessly.AAPLFleeScene: An "enemy" agent stays away whenever the player agent draws near.AAPLAvoidScene: The player agent steers around obstacles to reach the mouse/touch location.AAPLSeparateScene: Two "friend" agents attempt to maintain consistent distance from the player agent.AAPLAlignScene: Two "friend" agents attempt to maintain consistent orientation with the player agent.AAPLFlockScene: By combining separation, alignment, and cohesion goals, a group of agents moves together to follow the mouse/touch.AAPLPathScene: An agent automatically follows a path.
For more information about using the GameplayKit agent simulation, see the chapter "Agents, Goals, and Behaviors" in GameplayKit Programming Guide.
Xcode 7.0, iOS 9.0 SDK or OS X 10.11 SDK
iOS 9.0 or OS X 10.11
Copyright (C) 2015 Apple Inc. All rights reserved.