Basic movement and art done
This commit is contained in:
parent
44ac1a7a9b
commit
7a39b88854
178
index.html
178
index.html
@ -32,14 +32,12 @@
|
|||||||
margin-top: 0px;
|
margin-top: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#test {
|
#plane {
|
||||||
width: 88px;
|
width: 88px;
|
||||||
height: 73px;
|
height: 73px;
|
||||||
background-image: url(sheet.png);
|
background-image: url(sheet.png);
|
||||||
-webkit-animation: cycle_sprites 300ms steps(1) infinite,
|
-webkit-animation: cycle_sprites 300ms steps(1) infinite;
|
||||||
move_bird 5s linear infinite;
|
animation: cycle_sprites 300ms steps(1) infinite;
|
||||||
animation: cycle_sprites 300ms steps(1) infinite,
|
|
||||||
move_bird 5s linear infinite;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes cycle_sprites {
|
@-webkit-keyframes cycle_sprites {
|
||||||
@ -69,70 +67,136 @@
|
|||||||
background-position: -222px -1562px;
|
background-position: -222px -1562px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@-webkit-keyframes move_bird {
|
|
||||||
from {
|
|
||||||
left: 0px;
|
|
||||||
top: 100px
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
left: 600px;
|
|
||||||
top: 100px
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes move_bird {
|
|
||||||
from {
|
|
||||||
left: 0px;
|
|
||||||
top: 100px
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
left: 600px;
|
|
||||||
top: 100px
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1">
|
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1">
|
||||||
|
<script src="jquery-3.6.0.min.js"></script>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
<script>
|
||||||
|
// Setup
|
||||||
|
function timestamp() {
|
||||||
|
return window.performance && window.performance.now ? window.performance.now() : new Date().getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
var now,
|
||||||
|
dt = 0,
|
||||||
|
last = timestamp(),
|
||||||
|
step = 1 / 60;
|
||||||
|
|
||||||
|
var position_x = 100;
|
||||||
|
var position_y = 100;
|
||||||
|
|
||||||
|
function frame() {
|
||||||
|
now = timestamp();
|
||||||
|
dt = dt + Math.min(1, (now - last) / 1000);
|
||||||
|
|
||||||
|
while (dt > step) {
|
||||||
|
dt = dt - step;
|
||||||
|
update(step);
|
||||||
|
}
|
||||||
|
|
||||||
|
render(dt);
|
||||||
|
|
||||||
|
last = now;
|
||||||
|
requestAnimationFrame(frame);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Game
|
||||||
|
const GRAVITY = 200
|
||||||
|
const JUMP_VEL = 200
|
||||||
|
const SPIKE_DISTANCE = 400
|
||||||
|
|
||||||
|
class Bird {
|
||||||
|
constructor() {
|
||||||
|
this.position_x = 100;
|
||||||
|
this.position_y = 100;
|
||||||
|
|
||||||
|
this.width = 88;
|
||||||
|
this.height = 73;
|
||||||
|
|
||||||
|
this.velocity_y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Spikes {
|
||||||
|
constructor() {
|
||||||
|
this.position_x = 350;
|
||||||
|
this.position_y = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let player = new Bird()
|
||||||
|
|
||||||
|
// Fixed time loop
|
||||||
|
function update(dt) {
|
||||||
|
player.position_y += player.velocity_y * dt;
|
||||||
|
player.position_x += 100 * dt;
|
||||||
|
|
||||||
|
// Gravity
|
||||||
|
player.velocity_y += GRAVITY * dt;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Variable time render loop
|
||||||
|
function render(dt) {
|
||||||
|
$("#plane").css({
|
||||||
|
top: player.position_y + "px",
|
||||||
|
left: player.position_x + "px"
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// Jump
|
||||||
|
document.onmousedown = function (evt) {
|
||||||
|
player.velocity_y = -JUMP_VEL;
|
||||||
|
};
|
||||||
|
|
||||||
|
requestAnimationFrame(frame);
|
||||||
|
</script>
|
||||||
<div id="viewport">
|
<div id="viewport">
|
||||||
<div style="
|
<div id="floor" style="
|
||||||
left:0px;
|
left:0px;
|
||||||
top:300px;
|
top:409px;
|
||||||
background-image:url(sheet.png);
|
background-image:url(sheet.png);
|
||||||
background-position: -0px -410px;
|
background-position: -0px -142px;
|
||||||
width: 276px;
|
width: 800px;
|
||||||
height: 200px;
|
height: 71px;
|
||||||
|
z-index: -1;
|
||||||
|
">
|
||||||
|
</div>
|
||||||
|
<div id="background" style="
|
||||||
|
left:0px;
|
||||||
|
top:0px;
|
||||||
|
background-image:url(sheet.png);
|
||||||
|
background-position: -0px -355px;
|
||||||
|
width: 800px;
|
||||||
|
height: 480px;
|
||||||
z-index: -2;
|
z-index: -2;
|
||||||
">
|
">
|
||||||
</div>
|
</div>
|
||||||
<div style="
|
<div id="plane" style="
|
||||||
left:0px;
|
|
||||||
top:380px;
|
|
||||||
background-image:url(sheet.png);
|
|
||||||
background-position: -276px -410px;
|
|
||||||
width: 224px;
|
|
||||||
height: 110px;
|
|
||||||
z-index: -1;
|
|
||||||
">
|
|
||||||
</div>
|
|
||||||
<div style="
|
|
||||||
left:224px;
|
|
||||||
top:380px;
|
|
||||||
background-image:url(sheet.png);
|
|
||||||
background-position: -276px -410px;
|
|
||||||
width: 224px;
|
|
||||||
height: 110px;
|
|
||||||
z-index: -1;
|
|
||||||
">
|
|
||||||
</div>
|
|
||||||
<div id="test" style="
|
|
||||||
left: 100px;
|
|
||||||
top: 100px;
|
|
||||||
z-index: 0;
|
z-index: 0;
|
||||||
|
">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="spike_bottom" style="
|
||||||
|
left:300px;
|
||||||
|
top:300px;
|
||||||
|
background-image:url(sheet.png);
|
||||||
|
background-position: -0px -1757px;
|
||||||
|
width: 108px;
|
||||||
|
height: 239px;
|
||||||
|
z-index: 1;
|
||||||
|
">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="spike_top" style="
|
||||||
|
left:300px;
|
||||||
|
top:-100px;
|
||||||
|
background-image:url(sheet.png);
|
||||||
|
background-position: -264px -986px;
|
||||||
|
width: 108px;
|
||||||
|
height: 239px;
|
||||||
|
z-index: 1;
|
||||||
">
|
">
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
2
jquery-3.6.0.min.js
vendored
Normal file
2
jquery-3.6.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user