10 years ago by bufk1n
Hey i am working right now on a school Project and me and my friend are trying to move the enemy AI to our position if we get close to him.
The Enemy is a Ghost and should kill us if he touches ther Player.
Also he should move around if the player isnt close to him.
Here ist some Code.
The Enemy is a Ghost and should kill us if he touches ther Player.
Also he should move around if the player isnt close to him.
Here ist some Code.
ig.module(
'game.entities.NPC'
)
.requires(
'impact.entity'
)
.defines(function(){
EntityNPC = ig.Entity.extend({
size: {x:16 , y:16},
offset: {x: 16, y: 20},
type: ig.Entity.TYPE.B,
checkAgainst: ig.Entity.TYPE.B,
collides: ig.Entity.COLLIDES.PASSIVE,
friction: {x:0, y:0},
formerpressed: "down",
sfxScream: new ig.Sound( 'media/sounds/scream.mp3' ),
animSheet: new ig.AnimationSheet ('media/darkgoddess_b.png', 48, 48),
flip: false,
init: function( x, y, settings ) {
// Add the animations
this.addAnim( 'idle', 1, [0] );
this.addAnim( 'walkleft', 0.1, [3,4,5] );
this.addAnim( 'walkright', 0.1, [6,7,8] );
this.addAnim( 'walkup', 0.1, [9,10,11] );
this.addAnim( 'walkdown', 0.1, [0,1,2] );
this.addAnim( 'lookleft', 1, [4] );
this.addAnim( 'lookright', 1, [7] );
this.addAnim( 'lookup', 1, [10] );
this.addAnim( 'lookdown', 1, [0] );
this.parent( x, y, settings );
//MOVEMENT CODE
movementtimer = new ig.Timer();
//MOVEMENT CODE
//END INIT
},
charactermovement: function(){
var randomdirection= Math.floor(Math.random()*5)+1;
if( randomdirection == 1 ) {
this.vel.x = -64;
this.vel.y = 0;
this.currentAnim = this.anims.walkleft;
this.formerpressed = 'left';
}
else if( randomdirection == 3 ) {
this.vel.x = 64;
this.vel.y = 0;
this.currentAnim = this.anims.walkright;
this.formerpressed = 'right';
}
else if( randomdirection == 2 ) {
this.vel.y = -64;
this.vel.x = 0;
this.currentAnim = this.anims.walkup;
this.formerpressed = 'up';
}
else if( randomdirection == 4 ) {
this.vel.y = 64;
this.vel.x = 0;
this.currentAnim = this.anims.walkdown;
this.formerpressed = 'down';
}
else
{
this.vel.y = 0;
this.vel.x = 0;
if(this.formerpressed == 'left')
{
this.currentAnim = this.anims.lookleft;
}
else if (this.formerpressed == 'right')
{
this.currentAnim = this.anims.lookright;
}
else if (this.formerpressed == 'up')
{
this.currentAnim = this.anims.lookup;
}
else if (this.formerpressed == 'down')
{
this.currentAnim = this.anims.lookdown;
}
}
},
//NO MOVEMENT
nomovement: function(formerpressed){
this.vel.y = 0;
this.vel.x = 0;
if(this.formerpressed == 'left')
{
this.currentAnim = this.anims.lookleft;
}
else if (this.formerpressed == 'right')
{
this.currentAnim = this.anims.lookright;
}
else if (this.formerpressed == 'up')
{
this.currentAnim = this.anims.lookup;
}
else if (this.formerpressed == 'down')
{
this.currentAnim = this.anims.lookdown;
}
},
//END MOVEMENT CODE
update: function() {
if (movementtimer.delta() > 5 && this.vel.y == 0 && this.vel.x == 0 )
{
this.charactermovement();
}
if (movementtimer.delta() > 6 && (this.vel.y > 0 || this.vel.x > 0) )
{
this.nomovement(this.formerpressed);
movementtimer = new ig.Timer();
}
//END MOVEMENT CODE
this.parent();
//Demon code
var deltax = (Math.round(ig.game.player.pos.x-this.pos.x));
var deltay = (Math.round(ig.game.player.pos.y-this.pos.y));
if(this.distanceTo(ig.game.player)<130){
//if (Math.sqrt((deltax*deltax)+(deltay*deltay))<130) {
//if (deltax>0) {
// this.vel.x = 72;
// this.currentAnim=this.anims.walkdown;
//
//}
//else if (deltax<0) {
// this.vel.x = -72;
// this.currentAnim=this.anims.walkdown;
//}
//else if (deltax==0) {
// this.vel.x = 0
// this.currentAnim=this.anims.walkdown;
//}
//
//if (deltay>0) {
// this.vel.y = 72;
// this.currentAnim=this.anims.walkdown;
//}
//else if (deltay<0) {
// this.vel.y = -72;
// this.currentAnim=this.anims.walkdown;
//}
//else if (deltay==0) {
// this.vel.y = 0;
// this.currentAnim=this.anims.walkdown;
//}
}
if ((Math.abs(deltax)<=3) && (Math.abs(deltay)<=3)){
console.log('Ich hab dich gefangen');
if (ig.game.player.key==1) {
key=1;
}
var hearts=ig.game.player.health;
var xPlayer=ig.game.player.pos.x;
var yPlayer=ig.game.player.pos.y;
ig.game.player.kill();
ig.game.circle.kill();
var rand = Math.ceil(Math.random()*4);
switch (rand) {
case 1:
ig.game.spawnEntity('EntityPlayer',350,160);
ig.game.spawnEntity('EntityCircle',350,160);
ig.game.player.health=hearts -1;
this.sfxScream.play();
break;
case 2:
ig.game.spawnEntity('EntityPlayer',150,840);
ig.game.spawnEntity('EntityCircle',150,840);
ig.game.player.health=hearts -1;
this.sfxScream.play();
break;
case 3:
ig.game.spawnEntity('EntityPlayer',1880,860);
ig.game.spawnEntity('EntityCircle',1880,860);
ig.game.player.health=hearts -1;
this.sfxScream.play();
break;
case 4:
ig.game.spawnEntity('EntityPlayer',1760,160);
ig.game.spawnEntity('EntityCircle',1760,160);
ig.game.player.health=hearts -1;
this.sfxScream.play();
break;
}
if (key==1) {
ig.game.spawnEntity('EntityKey',xPlayer,yPlayer);
}
}
},
draw: function() {
this.parent();
}
})
});
