1 decade ago by mk1sg633
i write some code and spawn the Entity in init ,
but it have a error in weltmeister TypeError: ig.game.spawnEntity is not a function
why i can't spawn the Entity in init?
here is my code
but it have a error in weltmeister TypeError: ig.game.spawnEntity is not a function
why i can't spawn the Entity in init?
here is my code
ig.module( 'game.entities.shipb' ) .requires( 'impact.entity', 'impact.game' ) .defines(function(){ EntityShipb = ig.Entity.extend({ size: {x: 137, y: 77}, maxVel: {x: 100, y: 0}, friction: {x: 150, y: 0}, type: ig.Entity.TYPE.B, // Evil enemy group checkAgainst: ig.Entity.TYPE.A, // Check against friendly collides: ig.Entity.COLLIDES.NONE, health: 150, speed: 14, flip: false, player: null, armOffsets:[ {x:0,y:10,timerOffset:3}, ], children:[], oscillationTimer: new ig.Timer(), animSheet: new ig.AnimationSheet( 'media/big/ship_1.png', 274, 154 ), init: function( x, y, settings ) { this.parent( x, y, settings ); this.vel.x = 10; this.addAnim( 'crawl', 1, [0] ); ig.game.spawnEntity(EntityEnemyGun,this.pos.x-32,this.pos.y-11); }, draw: function(){ var ctx = ig.system.context; ctx.save(); ctx.translate( ig.system.getDrawPos( this.pos.x - this.offset.x - ig.game.screen.x ), ig.system.getDrawPos( this.pos.y - this.offset.y - ig.game.screen.y ) ); ctx.scale( 0.5, 0.5 ); this.currentAnim.draw( 0, 0 ); ctx.restore(); }, update: function() { // near an edge? return! this.parent(); if( !ig.game.collisionMap.getTile( this.pos.x + (this.flip ? +4 : this.size.x -4), this.pos.y + this.size.y)) { this.flip = !this.flip; } var xdir = this.flip ? -1 : -1; this.vel.x = 14 * xdir; this.pos.y = 468; this.updateChildren(); if (this.children=="") { this.attachGuns(0); } }, attachGuns: function(offset){ var f = ig.game.spawnEntity(EntityEnemyGun,this.pos.x-32,this.pos.y-11); this.children.push(f); var c = ig.game.spawnEntity(Entityeney,this.pos.x,this.pos.y+10); this.children.push(c); }, updateChildren: function () { if (!this.children.length) return; var cover = this.children[0]; cover.pos.x =this.pos.x-32; cover.pos.y =this.pos.y-10; cover.zindex = 10; ig.game.sortEntitiesDeferred(); var canon = this.children[1]; canon.pos.x =this.pos.x; canon.pos.y =this.pos.y+10; canon.zindex = cover.zindex-10; this.parent(); ig.game.sortEntitiesDeferred(); }, handleMovementTrace: function( res ) { this.parent( res ); // collision with a wall? return! if( res.collision.x ) { this.flip = !this.flip; } }, collideWith : function( other, axis ) { this.parent( other , axis ); }, check: function( other ) { this.receiveDamage(100); this.children[0].receiveDamage(100); this.children[1].receiveDamage(100); } }); Entityeney = ig.Entity.extend({ size: {x: 54, y: 40}, offset: {x: 2, y: 2}, maxVel: {x: 0, y: 0}, health:100, // The fraction of force with which this entity bounces back in collisions type: ig.Entity.TYPE.NONE, checkAgainst: ig.Entity.TYPE.B, // Check Against B - our evil enemy group collides: ig.Entity.COLLIDES.NONE, animSheet: new ig.AnimationSheet( 'media/big/ship_1_canon_cover.png', 54, 40 ), init: function( x, y, settings ) { this.parent( x, y, settings ); this.addAnim( 'idle', 1, [0] ); }, handleMovementTrace: function( res ) { this.parent( res ); }, // This function is called when this entity overlaps anonther entity of the // checkAgainst group. I.e. for this entity, all entities in the B group. check: function( other ) { } }); EntityEnemyGun = Entityeney.extend({ health:100, bullets:1, firingTimer: null, reloadTime: 3, animSheet: new ig.AnimationSheet('media/big/ship_1_canon.png',54,44), init: function(x,y,settings){ this.parent(x,y,settings); this.addAnim('idle', 0.2, [0,1,2,3,4,5]); this.firingTimer = new ig.Timer(this.reloadTime ); }, update: function() { this.parent(); if (this.firingTimer.delta() > 0) { var angleIncrease = 360 / (this.bullets - 1); var initAngle = 200; for (var i = 0; i < this.bullets; i++) { var angle = initAngle * Math.PI / 180; var x = this.pos.x ; var y = this.pos.y ; ig.game.spawnEntity(EntityEnemyBullet, x+4, y+20, { angle: angle }); this.currentAnim = this.anims.idle; } this.firingTimer.set(this.reloadTime); } } }); EntityEnemyBullet = ig.Entity.extend({ size: {x: 25, y: 25}, offset: {x: 10, y: 0}, maxVel: {x: 300, y: 300}, animSheet: new ig.AnimationSheet('media/big/canon_ball.png',25,25), health: 10, bounciness: 0.6, type: ig.Entity.TYPE.B, checkAgainst: ig.Entity.TYPE.A, // Check Against B - our evil enemy group collides: ig.Entity.COLLIDES.NONE, bounceCounter: 0, init: function(x,y,settings){ this.parent(x,y,settings); this.addAnim('idle', 1, [0]); this.vel.x = -200 this.vel.y = -200; }, update: function () { this.parent(); }, handleMovementTrace: function( res ) { this.parent( res ); if( res.collision.x || res.collision.y ) { // only bounce 3 times this.bounceCounter++; if( this.bounceCounter > 0 ) { this.kill(); } } }, check: function( other ) { this.kill(); other.receiveDamage(50,this); }, }); });