|
|
@@ -1,12 +1,11 @@ |
|
|
|
мир.игрок = { |
|
|
|
задано: {}, |
|
|
|
обновить: function() { |
|
|
|
мир.игрок.переместить(); |
|
|
|
мир.игрок.задатьМаскуСтолкновения(); |
|
|
|
прыжок: { |
|
|
|
статус: 0, |
|
|
|
время: new Date(), |
|
|
|
скоростьОтсутствия: 0.0001, |
|
|
|
}, |
|
|
|
maxv: 0, |
|
|
|
minv: 0, |
|
|
|
было: 0, |
|
|
|
тело: null, |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -27,27 +26,40 @@ |
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
мир.игрок.переместить = function() |
|
|
|
{ |
|
|
|
var тело = мир.объекты.тела[мир.игрок.задано.объект]; |
|
|
|
if (!тело) |
|
|
|
мир.игрок.обновить = function() { |
|
|
|
мир.игрок.тело = мир.объекты.тела[мир.игрок.задано.объект]; |
|
|
|
if (!мир.игрок.тело) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
мир.игрок.переместить(); |
|
|
|
мир.игрок.задатьМаскуСтолкновения(); |
|
|
|
мир.игрок.отслеживатьПрыжкиПриземления(); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // // |
|
|
|
|
|
|
|
|
|
|
|
мир.игрок.переместить = function() |
|
|
|
{ |
|
|
|
var к = [ |
|
|
|
мир.игрок.задано["клавиши.0"], |
|
|
|
мир.игрок.задано["клавиши.1"], |
|
|
|
мир.игрок.задано["клавиши.2"], |
|
|
|
//мир.игрок.задано["клавиши.2"], |
|
|
|
]; |
|
|
|
var влево = (мир.ввод.клавиши[к[0]] == true); |
|
|
|
var вправо = (мир.ввод.клавиши[к[1]] == true); |
|
|
|
var вверх = (мир.ввод.клавиши[к[2]] == true); |
|
|
|
|
|
|
|
var скоростьГ = мир.игрок.задано["скорость.0"]; |
|
|
|
var скоростьВ = мир.игрок.задано["скорость.1"]; |
|
|
|
var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y; |
|
|
|
var скоростьX = 0; |
|
|
|
|
|
|
|
//var вверх = (мир.ввод.клавиши[к[2]] == true); |
|
|
|
//var скоростьY = (вверх && Math.abs(тело.velocity.y) <= 0.00001) ? -скоростьВ : тело.velocity.y; |
|
|
|
var скоростьВ = мир.игрок.задано["скорость.1"]; |
|
|
|
var скоростьY = (мир.игрок.прыжок.статус == 1) ? -скоростьВ : мир.игрок.тело.velocity.y; |
|
|
|
|
|
|
|
if (влево) |
|
|
|
{ |
|
|
|
скоростьX = -скоростьГ; |
|
|
@@ -57,8 +69,8 @@ |
|
|
|
скоростьX = скоростьГ; |
|
|
|
} |
|
|
|
|
|
|
|
Matter.Sleeping.set(тело, false); |
|
|
|
Matter.Body.setVelocity(тело, { x: скоростьX, y: скоростьY }); |
|
|
|
Matter.Sleeping.set(мир.игрок.тело, false); |
|
|
|
Matter.Body.setVelocity(мир.игрок.тело, { x: скоростьX, y: скоростьY }); |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
@@ -67,15 +79,11 @@ |
|
|
|
|
|
|
|
мир.игрок.задатьМаскуСтолкновения = function() |
|
|
|
{ |
|
|
|
var тело = мир.объекты.тела[мир.игрок.задано.объект]; |
|
|
|
if (!тело) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
var прыжок = тело.velocity.y < -1; |
|
|
|
var прыжок = мир.игрок.тело.velocity.y < -1; |
|
|
|
var маска = прыжок ? 1 : (1 | 2); |
|
|
|
тело.collisionFilter.mask = маска; |
|
|
|
мир.игрок.тело.collisionFilter.mask = маска; |
|
|
|
|
|
|
|
/* |
|
|
|
if (тело.velocity.y < мир.игрок.minv) |
|
|
|
{ |
|
|
|
мир.игрок.minv = тело.velocity.y; |
|
|
@@ -91,5 +99,47 @@ if (Math.abs(мир.игрок.было - тело.velocity.y) > 0.001) |
|
|
|
мир.игрок.было = тело.velocity.y; |
|
|
|
console.debug("vel", мир.игрок.было); |
|
|
|
} |
|
|
|
*/ |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// // // / |
|
|
|
|
|
|
|
|
|
|
|
мир.игрок.отслеживатьПрыжкиПриземления = function() |
|
|
|
{ |
|
|
|
if (мир.игрок.прыжок.статус == 1) |
|
|
|
{ |
|
|
|
мир.игрок.прыжок.статус = 2; |
|
|
|
console.debug("в прыжке"); |
|
|
|
} |
|
|
|
var нетДвижения = (Math.abs(мир.игрок.тело.velocity.y) < мир.игрок.прыжок.скоростьОтсутствия); |
|
|
|
var клавиша = мир.игрок.задано["клавиши.2"]; |
|
|
|
var вверх = (мир.ввод.клавиши[клавиша] == true); |
|
|
|
document.getElementById("отладка").innerHTML = `!статус/вверх/нетДвижения: '${!мир.игрок.прыжок.статус}'/'${вверх}'/'${нетДвижения}'`; |
|
|
|
if ( |
|
|
|
мир.игрок.прыжок.статус == 0 && |
|
|
|
вверх && |
|
|
|
нетДвижения |
|
|
|
) { |
|
|
|
мир.игрок.прыжок.статус = 1; |
|
|
|
console.debug("начали прыжок"); |
|
|
|
} |
|
|
|
|
|
|
|
if (мир.игрок.прыжок.статус != 2) |
|
|
|
{ |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
var сейчас = new Date(); |
|
|
|
var прошло = сейчас - мир.игрок.прыжок.время; |
|
|
|
if ( |
|
|
|
(прошло > 20) && |
|
|
|
нетДвижения |
|
|
|
) { |
|
|
|
мир.игрок.прыжок.время = сейчас; |
|
|
|
мир.игрок.прыжок.статус = 0; |
|
|
|
console.debug("закончили прыжок"); |
|
|
|
} |
|
|
|
}; |