10 years ago by Cadence96
Hi, my EntityPlayer can kill enemies by jumping then it bounces. But it can receive damage if it touches an enemy by axis x. After receiving damage the player becomes invincible for a few seconds.
Until that everything works. The problem is that I want the player walk through enemies (axis x) while is invincible. But it is not possible since my player uses collideWith to detect axis and it doesn't work with collides.PASSIVE.
I've tried changing collides from ACTIVE to PASSIVE if collideWith axis is x. But collides executes ACTIVE first before setting to PASSIVE.
1) Is it a way to make collideWith method work if player collides is PASSIVE ? If collides is PASSIVE, I can not make the player bounce when jumping over enemy.
or
2) Is a way I can change to PASSIVE before executing collideWith?
Until that everything works. The problem is that I want the player walk through enemies (axis x) while is invincible. But it is not possible since my player uses collideWith to detect axis and it doesn't work with collides.PASSIVE.
I've tried changing collides from ACTIVE to PASSIVE if collideWith axis is x. But collides executes ACTIVE first before setting to PASSIVE.
1) Is it a way to make collideWith method work if player collides is PASSIVE ? If collides is PASSIVE, I can not make the player bounce when jumping over enemy.
or
2) Is a way I can change to PASSIVE before executing collideWith?
EntityPlayer = ig.Entity.extend({ collides: ig.Entity.COLLIDES.ACTIVE, init: function() { this.invincibleTimer = new ig.Timer(); }, collideWith: function(other, axis) { if (other instanceof EntityEnemy ) { if ( axis == 'y' ) { this.vel.y -= 500; // bounce } if ( axis == 'x') { this.collides = ig.Entity.COLLIDES.PASSIVE; this.receiveDamage(other.ap, other); } } }, receiveDamage: function(amount, from) { this.currentAnim.alpha = 0.5; if ( this.invincibleTimer.delta() > 0) { this.invincibleTimer.set(2); this.health-=amount; } }, }); EntityEnemy = ig.Entity.extend({ ap: 1, collides: ig.Entity.COLLIDES.PASSIVE, collideWith: function ( other, axis ) { if( other instanceof EntityPlayer ) { if( axis == 'y' ) { this.kill(); } } } });