feat: tiger AI

This commit is contained in:
Renge 2022-04-30 19:09:39 -04:00
parent 3511dbae8b
commit 9aa76b7963
7 changed files with 24 additions and 12 deletions

View File

@ -40,6 +40,12 @@
"type": "player",
"x": 5,
"y": 10
},
{
"type": "Tiger",
"x": 3,
"y": 7,
"possibility": 1
}
]

View File

@ -19,11 +19,6 @@ export default class Attack extends EnemyState {
this.receiver.subscribe(this.attacked);
}
update(deltaT: number): void {
this.finished(EnemyStates.ALERT);
super.update(deltaT);
}
onExit(): Record<string, any> {
this.parent.isCharging = false;
(<AnimatedSprite>this.owner).animation.stop();

View File

@ -31,7 +31,15 @@ export default abstract class EnemyState extends State {
this.parent.velocity.x = 0;
}
// Do gravity
this.parent.velocity.y += this.gravity * deltaT;
if (this.owner.onGround) {
this.parent.velocity.y = 0;
}
else if (this.owner.onCeiling) {
this.parent.velocity.y += this.gravity * deltaT * 2;
}
else {
this.parent.velocity.y += this.gravity * deltaT;
}
this.owner.move(this.parent.velocity.scaled(deltaT));
}
}

View File

@ -7,7 +7,6 @@ import Attack from "./Attack";
export default class TigerAttack extends Attack {
protected velocity: number;
protected distance: number;
protected attacking: boolean = false;
onEnter(options: Record<string, any>): void {
super.onEnter(options);
@ -15,7 +14,7 @@ export default class TigerAttack extends Attack {
}
update(deltaT: number): void {
if (this.attacking && this.owner.onGround) {
if (this.parent.isAttaking && this.owner.onGround) {
this.emitter.fireEvent(this.attacked);
}
while (this.receiver.hasNextEvent()) {
@ -25,9 +24,9 @@ export default class TigerAttack extends Attack {
this.parent.isCharging = false;
this.parent.isAttaking = true;
(<AnimatedSprite>this.owner).animation.play("ATTACK", true);
this.velocity = (this.parent.getPlayerPosition().x - this.owner.position.x)/2;
this.velocity = (this.parent.getPlayerPosition().x - this.owner.position.x)/1.5;
this.parent.direction = this.velocity >= 0 ? 1 : 0;
this.attacking = true;
this.parent.velocity.y = -800;
break;
case this.attacked:
this.parent.isAttaking = false;

View File

@ -22,6 +22,7 @@ import BattleManager from "../GameSystems/BattleManager";
import EnemyAI from "../AI/EnemyAI";
import SnakeAI from "../AI/SnakeAI";
import SlimeAI from "../AI/SlimeAI";
import TigerAI from "../AI/TigerAI";
import BattlerAI from "../AI/BattlerAI";
import InventoryManager from "../GameSystems/InventoryManager";
import Item from "../GameSystems/items/Item";
@ -865,10 +866,13 @@ export default class GameLevel extends Scene {
})
break;
case "Tiger": //Tiger can be miniboss for now?
this.addEnemy("Tiger", enemy.position.scale(32), EnemyAI, {
this.addEnemy("Tiger", enemy.position.scale(32), TigerAI, {
player: this.player,
health: 200,
tilemap: "Main",
scale: 1.5,
size: new Vec2(30,18),
offset : new Vec2(0, 27),
exp: 100,
})
break;

View File

@ -20,6 +20,7 @@ export default class Porcelain extends GameLevel {
this.map = this.rmg.getMap();
console.log(this.map);
this.load.tilemapFromObject("map", this.map);
this.load.spritesheet("Tiger","shattered_sword_assets/spritesheets/Tiger.json");
// //load enemies
// this.load.spritesheet("Snake","shattered_sword_assets/spritesheets/Snake.json");

View File

@ -14,7 +14,6 @@ export default class Tutorial extends GameLevel {
//load enemies
this.load.spritesheet("Snake","shattered_sword_assets/spritesheets/Snake.json");
this.load.spritesheet("Tiger","shattered_sword_assets/spritesheets/Tiger.json");
//can load enemy sprite here
//sprites obtained from cse380 sprite wesbite