fix: hurt animation

This commit is contained in:
Renge 2022-04-20 13:53:55 -04:00
parent f72d2968d1
commit abebaf2615
9 changed files with 140 additions and 19 deletions

View File

@ -210,13 +210,65 @@
"name": "HURT", "name": "HURT",
"repeat": false, "repeat": false,
"frames": [ "frames": [
{
"index": 39,
"duration": 5
},
{ {
"index": 0, "index": 0,
"duration": 500 "duration": 5
}, },
{ {
"index": 39, "index": 39,
"duration": 500 "duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
} }
] ]
}, },

View File

@ -200,15 +200,63 @@
}, },
{ {
"name": "HURT", "name": "HURT",
"repeat": true, "repeat": false,
"frames": [ "frames": [
{ {
"index": 0, "index": 0,
"duration": 50 "duration": 5
}, },
{ {
"index": 39, "index": 39,
"duration": 50 "duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
},
{
"index": 0,
"duration": 5
},
{
"index": 39,
"duration": 5
} }
] ]
}, },

View File

@ -112,10 +112,10 @@ export default class EnemyAI extends StateMachineGoapAI implements BattlerAI {
activate(options: Record<string, any>): void { } activate(options: Record<string, any>): void { }
damage(damage: number): void { damage(damage: number): void {
console.log(damage +" damage taken, "+this.CURRENT_HP+" hp left");
this.CURRENT_HP -= damage; this.CURRENT_HP -= damage;
//TODO - //TODO -
this.owner.animation.play("HURT",false); this.owner.animation.play("HURT",false);
console.log(damage +" damage taken, "+this.CURRENT_HP+" hp left");
// If we're low enough, add Low Health status to enemy // If we're low enough, add Low Health status to enemy
if (this.CURRENT_HP <= Math.floor(this.maxHealth/2)) { if (this.CURRENT_HP <= Math.floor(this.maxHealth/2)) {

View File

@ -121,8 +121,8 @@ export default class PlayerController extends StateMachineAI implements BattlerA
this.CURRENT_SHIELD = newshield; //update shield value this.CURRENT_SHIELD = newshield; //update shield value
} }
else{ else{
//console.log("hurt anim"); console.log("hurt anim");
(<AnimatedSprite>this.owner).animation.play("HURT" ); (<AnimatedSprite>this.owner).animation.play("HURT", false);
this.CURRENT_HP -= damage; this.CURRENT_HP -= damage;
if(this.CURRENT_HP <= 0){ if(this.CURRENT_HP <= 0){
(<AnimatedSprite>this.owner).animation.play("DYING"); (<AnimatedSprite>this.owner).animation.play("DYING");

View File

@ -7,20 +7,25 @@ export default class Fall extends InAir {
owner: AnimatedSprite; owner: AnimatedSprite;
onEnter(options: Record<string, any>): void { onEnter(options: Record<string, any>): void {
this.owner.animation.play("FALL", true); // this.owner.animation.play("FALL", true);
} }
update(deltaT: number): void { update(deltaT: number): void {
super.update(deltaT); if (this.parent.invincible) {
this.owner.animation.playIfNotAlready("HURT");
}
else {
this.owner.animation.playIfNotAlready("FALL", true);
}
//TODO - testing doublejump, may have to move to InAir instead //TODO - testing doublejump, may have to move to InAir instead
// If we jump, move to the Jump state, give a burst of upwards velocity // If we jump, move to the Jump state, give a burst of upwards velocity
if( this.parent.airjumps>0 && InputWrapper.isJumpJustPressed()){ if( this.parent.airjumps>0 && InputWrapper.isJumpJustPressed()){
this.parent.airjumps --; this.parent.airjumps --;
this.finished("jump"); this.finished("jump");
this.parent.velocity.y = -600; // basically jump height this.parent.velocity.y = -600; // basically jump height
} }
super.update(deltaT);
} }
onExit(): Record<string, any> { onExit(): Record<string, any> {
this.owner.animation.stop(); this.owner.animation.stop();

View File

@ -11,10 +11,14 @@ export default class Idle extends OnGround {
update(deltaT: number): void { update(deltaT: number): void {
if (this.parent.invincible) {
this.owner.animation.playIfNotAlready("HURT");
}
else {
this.owner.animation.playIfNotAlready("IDLE", true);
}
this.owner.animation.playIfNotAlready("IDLE", true);
let dir = this.getInputDirection(); let dir = this.getInputDirection();
if(!dir.isZero() && dir.y === 0){ if(!dir.isZero() && dir.y === 0){

View File

@ -17,9 +17,13 @@ export default class Jump extends InAir {
update(deltaT: number): void { update(deltaT: number): void {
super.update(deltaT); if (this.parent.invincible) {
this.owner.animation.playIfNotAlready("HURT");
}
else {
this.owner.animation.playIfNotAlready("JUMP", true);
}
this.owner.animation.play("JUMP", true);
if(this.owner.onCeiling){ if(this.owner.onCeiling){
this.parent.velocity.y = 0; this.parent.velocity.y = 0;
@ -38,6 +42,7 @@ export default class Jump extends InAir {
if(this.parent.velocity.y >= 0){ if(this.parent.velocity.y >= 0){
this.finished(PlayerStates.FALL); this.finished(PlayerStates.FALL);
} }
super.update(deltaT);
} }
onExit(): Record<string, any> { onExit(): Record<string, any> {

View File

@ -1,6 +1,8 @@
import GameEvent from "../../../Wolfie2D/Events/GameEvent"; import GameEvent from "../../../Wolfie2D/Events/GameEvent";
import Game from "../../../Wolfie2D/Loop/Game";
import Sprite from "../../../Wolfie2D/Nodes/Sprites/Sprite"; import Sprite from "../../../Wolfie2D/Nodes/Sprites/Sprite";
import MathUtils from "../../../Wolfie2D/Utils/MathUtils"; import MathUtils from "../../../Wolfie2D/Utils/MathUtils";
import { GameState } from "../../sword_enums";
import InputWrapper from "../../Tools/InputWrapper"; import InputWrapper from "../../Tools/InputWrapper";
import PlayerState from "./PlayerState"; import PlayerState from "./PlayerState";
@ -31,7 +33,7 @@ export default class OnGround extends PlayerState {
this.parent.velocity.y = -600; // basically jump height this.parent.velocity.y = -600; // basically jump height
} }
else if(!this.owner.onGround){ else if(!this.owner.onGround && InputWrapper.getState() === GameState.GAMING){
this.finished("fall"); this.finished("fall");
} }
super.update(deltaT); super.update(deltaT);

View File

@ -9,12 +9,17 @@ export default class Walk extends OnGround {
onEnter(options: Record<string, any>): void { onEnter(options: Record<string, any>): void {
this.parent.speed = this.parent.MIN_SPEED; this.parent.speed = this.parent.MIN_SPEED;
} }
update(deltaT: number): void { update(deltaT: number): void {
console.log("walking anim"); if (this.parent.invincible) {
this.owner.animation.playIfNotAlready("WALK", true); this.owner.animation.playIfNotAlready("HURT");
}
else {
this.owner.animation.playIfNotAlready("WALK", true);
}
let dir = this.getInputDirection(); let dir = this.getInputDirection();