|
|
@@ -267,26 +267,6 @@ |
|
|
|
// Подкидывание стрелы |
|
|
|
// // // // |
|
|
|
|
|
|
|
function ПодкидываниеСтрелы(мир) { |
|
|
|
this.создать = function() { |
|
|
|
мир.события.подписать(this); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьСобытие = function(событие) { |
|
|
|
console.debug("ИГР ПодкидываниеС.обработатьС", событие); |
|
|
|
}; |
|
|
|
|
|
|
|
// Конструктор. |
|
|
|
this.создать(); |
|
|
|
} |
|
|
|
|
|
|
|
мир.подстр = new ПодкидываниеСтрелы(мир); |
|
|
|
|
|
|
|
мир.подкидываниеСтрелы = { |
|
|
|
сенсор: null, |
|
|
|
стрела: null, |
|
|
|
подкинули: false, |
|
|
|
}; |
|
|
|
|
|
|
|
мир.разобрать({ |
|
|
|
объекты: { |
|
|
@@ -343,43 +323,6 @@ console.debug("ИГР ПодкидываниеС.обработатьС", соб |
|
|
|
событие: "сенсор стрелы", |
|
|
|
}, |
|
|
|
}, |
|
|
|
действия: { |
|
|
|
сенсорСтрелы: [ |
|
|
|
() => { |
|
|
|
мир.подкидываниеСтрелы.сенсор = мир.физика.движок.timing.timestamp; |
|
|
|
}, |
|
|
|
"подкинутьСтрелу", |
|
|
|
], |
|
|
|
игрокНачалПрыжок: [ |
|
|
|
() => { |
|
|
|
мир.подкидываниеСтрелы.сенсор = null; |
|
|
|
мир.подкидываниеСтрелы.стрела = null; |
|
|
|
мир.подкидываниеСтрелы.подкинули = false; |
|
|
|
}, |
|
|
|
], |
|
|
|
игрокПриземлился: [ |
|
|
|
() => { мир.подкидываниеСтрелы.стрела = мир.физика.движок.timing.timestamp; }, |
|
|
|
"подкинутьСтрелу", |
|
|
|
], |
|
|
|
подкинутьСтрелу: [ |
|
|
|
() => { |
|
|
|
if ( |
|
|
|
мир.подкидываниеСтрелы.подкинули || |
|
|
|
!мир.подкидываниеСтрелы.стрела || |
|
|
|
!мир.подкидываниеСтрелы.сенсор || |
|
|
|
Math.abs(мир.подкидываниеСтрелы.стрела - мир.подкидываниеСтрелы.сенсор) > 0.00001 || |
|
|
|
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001 |
|
|
|
) { |
|
|
|
return; |
|
|
|
} |
|
|
|
мир.подкидываниеСтрелы.подкинули = true; |
|
|
|
Matter.Body.setVelocity( |
|
|
|
мир.объекты.тела.стрела, |
|
|
|
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 } |
|
|
|
); |
|
|
|
}, |
|
|
|
], |
|
|
|
}, |
|
|
|
маскиПрыжков: { |
|
|
|
стрела: { |
|
|
|
объект: "стрела", |
|
|
@@ -388,3 +331,68 @@ console.debug("ИГР ПодкидываниеС.обработатьС", соб |
|
|
|
}, |
|
|
|
}, |
|
|
|
}); |
|
|
|
|
|
|
|
function ПодкидываниеСтрелы() { |
|
|
|
this.создать = function() { |
|
|
|
this.времяСтрелы = null; |
|
|
|
this.времяПриземления = null; |
|
|
|
this.подкинули = false; |
|
|
|
this.закинули = null; |
|
|
|
|
|
|
|
мир.события.подписать(this); |
|
|
|
}; |
|
|
|
|
|
|
|
this.обработатьСобытие = function(событие) { |
|
|
|
if (событие == "сенсор стрелы") |
|
|
|
{ |
|
|
|
this.времяСтрелы = мир.физика.движок.timing.timestamp; |
|
|
|
this.подкинуть(); |
|
|
|
} |
|
|
|
else if (событие == "игрок приземлился") |
|
|
|
{ |
|
|
|
this.времяПриземления = мир.физика.движок.timing.timestamp; |
|
|
|
this.подкинуть(); |
|
|
|
} |
|
|
|
else if (событие = "игрок начал прыжок") |
|
|
|
{ |
|
|
|
this.времяСтрелы = null; |
|
|
|
this.времяПриземления = null; |
|
|
|
this.подкинули = false; |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
this.подкинуть = function() { |
|
|
|
if ( |
|
|
|
this.подкинули || |
|
|
|
!this.времяСтрелы || |
|
|
|
!this.времяПриземления || |
|
|
|
Math.abs(this.времяСтрелы - this.времяПриземления) > 0.00001 || |
|
|
|
Math.abs(мир.объекты.тела.стрела.velocity.y) > 0.00001 |
|
|
|
) { |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
this.подкинули = true; |
|
|
|
Matter.Body.setVelocity( |
|
|
|
мир.объекты.тела.стрела, |
|
|
|
{ x: 0, y: -мир.игрок.приземление.скорость * 1.2 } |
|
|
|
); |
|
|
|
|
|
|
|
// Уведомить о достижении нужной скорости. |
|
|
|
if ( |
|
|
|
(мир.игрок.приземление.скорость > 16) && |
|
|
|
this.закинули |
|
|
|
) { |
|
|
|
мир.события.отписать(this); |
|
|
|
this.закинули(); |
|
|
|
} |
|
|
|
}; |
|
|
|
|
|
|
|
// Конструктор. |
|
|
|
this.создать(); |
|
|
|
} |
|
|
|
|
|
|
|
мир.подкидываниеСтрелы = new ПодкидываниеСтрелы(); |
|
|
|
мир.подкидываниеСтрелы.закинули = function() { |
|
|
|
мир.подкидываниеСтрелы = null; |
|
|
|
}; |