improve enemy movement
This commit is contained in:
parent
784d63a780
commit
af23e757c3
1 changed files with 24 additions and 4 deletions
28
herzle.js
28
herzle.js
|
@ -2,6 +2,7 @@ debug = true;
|
|||
|
||||
player_pos = [0.5 * window.innerWidth, 0.9 * window.innerHeight];
|
||||
enemy_pos = [0.5 * window.innerWidth, 0.1 * window.innerHeight];
|
||||
new_enemy_pos = [enemy_pos[0], enemy_pos[1]];
|
||||
pewpew = 0;
|
||||
|
||||
document.onkeydown = onKeyDown;
|
||||
|
@ -114,7 +115,16 @@ function render() {
|
|||
enemydiv.style.border = "1px solid";
|
||||
}
|
||||
|
||||
function lerp(t, a, b) {
|
||||
return (a + t*(b-a));
|
||||
}
|
||||
|
||||
var a = 0;
|
||||
|
||||
function animate() {
|
||||
// inc loop counter
|
||||
a++;
|
||||
|
||||
// animate shoots
|
||||
for(var i = 0; i < shoots.length; i++) {
|
||||
if (shoots[i]) {
|
||||
|
@ -131,12 +141,22 @@ function animate() {
|
|||
}
|
||||
|
||||
// animate enemy
|
||||
// every now and then change direction
|
||||
var min = -50;
|
||||
var max = +50;
|
||||
var off = min + parseInt(Math.random() * (max-min));
|
||||
enemy_pos[0] += off;
|
||||
if (enemy_pos[0] < 0) enemy_pos[0] = 0;
|
||||
if (enemy_pos[0] > window.innerWidth) enemy_pos[0] = window.innerWidth;
|
||||
if (a % 15 == 0) {
|
||||
var off = min + parseInt(Math.random() * (max-min));
|
||||
new_enemy_pos[0] += off;
|
||||
var off = min + parseInt(Math.random() * (max-min));
|
||||
new_enemy_pos[1] += off;
|
||||
if (new_enemy_pos[0] < 0) new_enemy_pos[0] = 0;
|
||||
if (new_enemy_pos[0] > window.innerWidth) new_enemy_pos[0] = window.innerWidth;
|
||||
if (new_enemy_pos[1] < 0.05 * window.innerHeight) new_enemy_pos[1] = 0.05 * window.innerHeight;
|
||||
if (new_enemy_pos[1] > 0.5 * window.innerHeight) new_enemy_pos[0] = 0.5 * window.innerHeight;
|
||||
}
|
||||
// slowly move to desired position
|
||||
enemy_pos[0] = lerp(0.15, enemy_pos[0], new_enemy_pos[0]);
|
||||
enemy_pos[1] = lerp(0.15, enemy_pos[1], new_enemy_pos[1]);
|
||||
}
|
||||
|
||||
function gameLoop() {
|
||||
|
|
Reference in a new issue