Browse Source

исключить повтор

master
parent
commit
cbecb7198d
1 changed files with 65 additions and 57 deletions
  1. +65
    -57
      800.пример.json.js

+ 65
- 57
800.пример.json.js View File

@@ -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;
};

Loading…
Cancel
Save