From d2a76a1c1332d14d7cc672f4fb4d23cd2b292f75 Mon Sep 17 00:00:00 2001
From: "." <.>
Date: Tue, 13 May 2025 15:23:37 +0200
Subject: [PATCH] separate characer animations
---
index.html | 29 +++++++++++++++--------------
1 file changed, 15 insertions(+), 14 deletions(-)
diff --git a/index.html b/index.html
index 6d5514b..410b129 100644
--- a/index.html
+++ b/index.html
@@ -16,7 +16,7 @@
-
+
6, 6, 6, 6, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
6, 6, 6, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
@@ -179,6 +179,11 @@ player = {
frame: 0, d: 's',
x: 40, y: 40, z: 1,
sprite: document.getElementById("character"),
+ anim: "stand",
+ anims: {
+ stand: { start: 0, length: 8, speed: 4 },
+ walk: { start: 8, length: 16, speed: 2 }
+ },
init: function(){
this.w = this.sprite.getAttribute("width") * 1 || map.tw || 32;
@@ -204,9 +209,6 @@ player = {
case 'se': dy = .45 * this.speed; dx = .9 * this.speed; break;
}
- if (player.frame % 6 > 2) { dx *= 1.375; dy *= 1.375; }
- else { dx *= .625; dy *= .625; }
-
var n = map.tile_at(this.x + dx, this.y + dy, this.z);
var prop = map.props_of(n), head = map.props_of(n + map.rows * map.cols);
@@ -217,7 +219,7 @@ player = {
this.x += dx; this.y += dy; this.n = n;
}
- this.frame += this.frame < 255 ? 1 : -127;
+ this.frame++; this.frame %= 255;
map.offset_x = this.x - view.clientWidth / 2 |0;
map.offset_y = this.y - view.clientHeight / 2 |0;
@@ -232,6 +234,7 @@ player = {
this.z += this.zspeed -= map.gravity;
if (this.z > zbase) {
+ // speed up when in air
this.speed = this.ospeed * 2;
} else if (props.fluid && !bottom.blocking) {
this.n -= map.rows * map.cols;
@@ -245,7 +248,7 @@ player = {
draw: function(){ // player.draw
- var face = 0, state = 0;
+ var face = 0, state = 0, anim = this.anims[this.anim];
switch (this.d){
case 's': face = 0; break;
@@ -258,12 +261,9 @@ player = {
case 'se': face = 7; break;
}
- state =
- (this.frame > 11) ? frame / 16 % 2 |0 :
- (this.frame < 12) ? this.frame / 3 + 2 |0 :
- 0;
+ state = anim.start + this.frame / anim.speed % anim.length | 0;
- canvas.drawImage( this.sprite, this.w * face, this.h * state,
+ canvas.drawImage( this.sprite, this.w * state, this.h * face,
this.w, this.h,
this.x - this.w / 2 - map.offset_x,
this.y - this.z * map.th - this.h + this.o - map.offset_y,
@@ -284,10 +284,11 @@ function get_input(){
if ( keys[65] || keys[37] ) d += 'w';
if ( keys[68] || keys[39] ) d += 'e';
- if ( d == '' ) player.frame = 12
+ if ( d == '' ) player.anim = "stand"
else {
+ if ( player.anim == "stand" ) player.frame = 0;
player.d = d;
- if ( player.frame > 11 ) player.frame = 0;
+ player.anim = "walk";
player.move();
}
@@ -303,7 +304,7 @@ function script(){
get_input();
player.fall();
map.draw();
- frame += frame < 255 ? 1 : -255;
+ frame++; frame %= 255;
}, 1000 / fps);
window.addEventListener('keydown', function(x){ keys[x.keyCode] = true; }, false );
--
2.39.5