spille demoen
laste ned kildekoden
TILBAKE TIL TUTORIAL INDEX
I forbindelse med denne demoen, er en fiende bare et kutt ned versjon av spiller enhet. Den vil inneholde de samme rendering, animasjon og romlige komponenter som la det en animert sprite bli trukket til skjermen og delta i dueller.
Fienden vil ikke flytte ennå, men i sannhet de fleste fiender i et plattformspill ikke kommer til å være mye mer komplisert hva vi har her likevel: generelt vil de bevege seg rundt med et par svært begrensede atferd som å vandre langs en plattform eller flyr gjennom luften. Hva vi ønsker å gjøre er å få en statisk fiende inn i spillet og ha spilleren reagerer på det.
Opprette fienden foretaket er gjort i EntityFactory klassen akkurat som scene, spiller og plattformer.
All koden for å lage Box2D romlig komponent, renderer komponent og animasjon komponenter er tatt nesten linje for linje fra etableringen av spilleren foretaket
statisk offentlig funksjon createEnemy (navn. String, scene: String, stilling: Point): IEntity {var enhet: IEntity = allocateEntity (); entity.initialize (navn); Var romlig: Box2DSpatialComponent = new Box2DSpatialComponent (); Var collisionShape: CircleCollisionShape = new CircleCollisionShape (); collisionShape.radius = 0,5; spatial.collisionShapes = new Array (); spatial.collisionShapes.push (collisionShape); spatial.collisionType = new ObjectType ("Enemy", "Renderable"); spatial.collidesWithTypes = new ObjectType ("Player"); spatial.position = posisjon; spatial.canSleep = false; spatial.canRotate = false; spatial.canMove = false; spatial.size = new Point (26, 20); spatial.manager = NameManager.instance.lookupComponentByName (scene, SCENE_BOX2DMANAGER_COMPONENT) som Box2DManagerComponent; entity.addComponent (romlig, "Spatial"); Var Render: SpriteRenderComponent = new SpriteRenderComponent (); Render.positionReference = new PropertyReference ("@ Spatial.position"); entity.
addComponent (Render, "Render"); Var Animasjon: AnimationController = new AnimationController (); Animation.spriteSheetReference = new PropertyReference ("@ Render.spriteSheet"); Animation.currentFrameReference = new PropertyReference ("@ Render.spriteIndex"); Animation.defaultAnimation = "Idle"; Var IdleSpriteSheet: SpriteSheetComponent = new SpriteSheetComponent (); IdleSpriteSheet.imageFilename = "../media/enemy.png"; Var divider1: CellCountDivider = new CellCountDivider (); divider1.xCount = 2; IdleSpriteSheet.
divider =