Михаил Капелько 3 лет назад
Родитель
Сommit
6b9a20ffbf
8 измененных файлов: 166 добавлений и 25 удалений
  1. +1
    -1
      К/index.html
  2. +0
    -2
      К/игра/108.группы.js
  3. +61
    -6
      К/игра/110.колобок.js
  4. +103
    -16
      К/игра/111.изба.js
  5. Двоичные данные
      К/ресурсы/вещи/стрела.png
  6. Двоичные данные
      К/ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav
  7. +1
    -0
      К/ресурсы/звуки/README.md
  8. Двоичные данные
      К/ресурсы/сцены/изба.jpg

+ 1
- 1
К/index.html Просмотреть файл

@@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>К 0.5.0</title>
<title>К 0.6.0</title>
<script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script>
<style>
html, body {


+ 0
- 2
К/игра/108.группы.js Просмотреть файл

@@ -24,8 +24,6 @@
{
мир.сцена.physics.add.collider(мир.вещи, мир.каркас);
мир.сцена.physics.add.collider(мир.вещи, мир.платформы);
//мир.сцена.physics.add.collider(мир.враги, мир.каркас);
//мир.сцена.physics.add.collider(мир.враги, мир.платформы);
};




+ 61
- 6
К/игра/110.колобок.js Просмотреть файл

@@ -25,12 +25,13 @@

СоздатьКолобка = мир =>
{
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
//мир.колобок = мир.сцена.physics.add.sprite(1000, 500, "колобок");
var x = 100;
var x = 1300;
мир.колобок = мир.сцена.physics.add.sprite(x, 500, "колобок");
мир.колобок.depth = 10;
мир.колобок.body.setSize(50);
// Портит анимацию прыжков!
//мир.колобок.setBounceY(0.1);
// мир.колобок.setBounceY(0.1);

// Следить за колобком камерой.
const камера = мир.сцена.cameras.main;
@@ -41,6 +42,8 @@
мигание: { },
прыгучесть: -570,
коэффициентПрыгучести: 1,
прыжок: false,
скоростьПадения: 0,
};
};

@@ -111,11 +114,12 @@
}
мир.колобок.setVelocityX(x);

if (мир.управление.прыжок && мир.колобок.body.touching.down)
if (мир.управление.прыжок && !мир.состояниеКолобка.прыжок)
{
мир.состояниеКолобка.прыжок = true;
var скорость = мир.состояниеКолобка.прыгучесть * мир.состояниеКолобка.коэффициентПрыгучести;
мир.колобок.setVelocityY(скорость);
мир.сцена.sound.play("прыжок");
мир.уведомить("колобок начал прыжок");
}
};

@@ -123,6 +127,38 @@
// // // //


ВоспроизвестиЗвукПрыжка = мир =>
{
мир.сцена.sound.play("прыжок");
};


// // // //


ОпределитьОкончаниеПрыжкаКолобка = мир =>
{
if (!мир.состояниеКолобка.прыжок)
{
return;
}

var скоростьПадения = мир.колобок.body.velocity.y;
if (
(мир.состояниеКолобка.скоростьПадения > 40) &&
(скоростьПадения == 0) &&
мир.колобок.body.touching.down
) {
мир.состояниеКолобка.прыжок = false;
мир.уведомить("колобок закончил прыжок");
}
мир.состояниеКолобка.скоростьПадения = скоростьПадения;
};


// // // //


АнимироватьКолобка = мир =>
{
var есть = "";
@@ -132,7 +168,7 @@
}

var надо = "колобок-неподвижен";
if (мир.управление && мир.управление.прыжок && !мир.колобок.body.touching.down)
if (мир.состояниеКолобка.прыжок)
{
надо = "колобок-прыжок";
}
@@ -264,6 +300,19 @@
};


// // // //


ВывестиНачалоПрыжкаВКонсоль = мир =>
{
console.debug("начало прыжка");
};
ВывестиОкончаниеПрыжкаВКонсоль = мир =>
{
console.debug("окончание прыжка. скорость:", мир.состояниеКолобка.скоростьПадения);
};


/*
*
* Последовательность
@@ -283,8 +332,14 @@
обновить сцену
переместить колобка
анимировать колобка
определить окончание прыжка колобка
мигать колобка
остановить передвижение вещей
колобок начал прыжок
воспроизвести звук прыжка
вывести начало прыжка в консоль
колобок закончил прыжок
вывести окончание прыжка в консоль
начали мигать колобка
отключить столкновение с платформами и вещами
уменьшить прыгучесть колобка


+ 103
- 16
К/игра/111.изба.js Просмотреть файл

@@ -8,6 +8,7 @@
ЗагрузитьРесурсыИзбы = мир =>
{
мир.сцена.load.audio("звук-избы", "ресурсы/звуки/387922__setuniman__scheming-1o95.mp3");
мир.сцена.load.audio("звук-зарядки", "ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav");

мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
мир.сцена.load.image("линия", "ресурсы/отладка/линия_вертикальная.png");
@@ -17,6 +18,7 @@
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
мир.сцена.load.image("мышь", "ресурсы/животные/мышь.png");
мир.сцена.load.image("самовар", "ресурсы/вещи/самовар.png");
мир.сцена.load.image("стрела", "ресурсы/вещи/стрела.png");
};


@@ -128,11 +130,13 @@
y: 180,
ширина: 12,
},
// Стол.
{
x: 1270,
y: 427,
ширина: 70,
},
// Окно.
{
x: 1690,
y: 375,
@@ -192,22 +196,6 @@
низ: 550,
верх: 270,
},
/*
{
x: 740,
y: 445,
скорость: 65,
низ: 550,
верх: 270,
},
{
x: 830,
y: 375,
скорость: 80,
низ: 550,
верх: 270,
},
*/
{
x: 785,
y: 375,
@@ -320,6 +308,96 @@
};


// // // //


СоздатьСтрелы = мир =>
{
мир.стрелаЗаряжена = false;

// Кучка стрел.
var группаСтрел = мир.сцена.physics.add.staticGroup();
var стрелы = группаСтрел.create(1270, 405, "основа").setOrigin(0, 0);
стрелы.setScale(25, 2).refreshBody();
стрелы.body.checkCollision.down = false;
стрелы.setVisible(false);
var столкновение = мир.сцена.physics.add.collider(мир.колобок, стрелы);
столкновение.collideCallback = function(a, b) {
мир.состояниеКолобка.прыжокПоСтрелам = true;
};

// Стрела в луку.
мир.стрелаКЛуку = мир.сцена.physics.add.sprite(1250, 380, "стрела").setOrigin(0, 0);
мир.стрелаКЛуку.setScale(0.5, 0.5).refreshBody();
мир.стрелаКЛуку.depth = 15;

// Учитываем платформы.
мир.сцена.physics.add.collider(мир.стрелаКЛуку, мир.каркас);
мир.сцена.physics.add.collider(мир.стрелаКЛуку, мир.платформы);

// Платформа для стрелы у лука, чтобы стрела оставалась в луке.
var платформы = мир.сцена.physics.add.staticGroup();
var платформаЛука = платформы.create(1280, 200, "основа").setOrigin(0, 0);
платформаЛука.body.checkCollision.down = false;
var столкновениеЛука = мир.сцена.physics.add.collider(мир.стрелаКЛуку, платформаЛука);
платформаЛука.setVisible(false);

// Определение заряда стрелы.
столкновениеЛука.collideCallback = function заряд(a, b) {
if (мир.стрелаКЛуку.body.touching.down && !мир.стрелаЗаряжена)
{
мир.стрелаЗаряжена = true;
мир.уведомить("стрела заряжена");
}
}
};


// // // //


ОтследитьПрыжокПоСтрелам = мир =>
{
мир.состояниеКолобка.прыжокПоСтрелам = null;
};


// // // //


ПроверитьНаличиеПрыжкаПоСтрелам = мир =>
{
if (!мир.состояниеКолобка.прыжокПоСтрелам)
{
return;
}
мир.уведомить("прыжок по платформе стрел");
};


// // // //


ПодкидыватьСтрелуКЛуку = мир =>
{
if (!мир.стрелаКЛуку.body.touching.down || мир.стрелаЗаряжена)
{
return;
}
var скорость = мир.состояниеКолобка.скоростьПадения * 0.9;
мир.стрелаКЛуку.setVelocityY(-скорость);
};


// // // //


ВоспроизвестиЗвукЗарядкиСтрелы = мир =>
{
мир.сцена.sound.play("звук-зарядки");
};


/*
*
* Последовательность
@@ -338,8 +416,17 @@
создать вещи
создать пауков
создать мышей
создать стрелы
обновить сцену
анимировать пауков
анимировать мышей
колобок начал прыжок
отследить прыжок по стрелам
колобок закончил прыжок
проверить наличие прыжка по стрелам
прыжок по платформе стрел
подкидывать стрелу к луку
стрела заряжена
воспроизвести звук зарядки стрелы
`);


Двоичные данные
К/ресурсы/вещи/стрела.png Просмотреть файл

До После
Ширина: 368  |  Высота: 59  |  Размер: 23KB

Двоичные данные
К/ресурсы/звуки/543927__eminyildirim__pistol-gun-cocking.wav Просмотреть файл


+ 1
- 0
К/ресурсы/звуки/README.md Просмотреть файл

@@ -5,3 +5,4 @@
* https://freesound.org/people/omerbhatti34/sounds/521552/
* https://freesound.org/people/Czarcazas/sounds/330800/
* https://freesound.org/people/Kneeling/sounds/448004/
* https://freesound.org/people/EminYILDIRIM/sounds/543927/

Двоичные данные
К/ресурсы/сцены/изба.jpg Просмотреть файл

До После
Ширина: 2000  |  Высота: 600  |  Размер: 110KB Ширина: 2000  |  Высота: 600  |  Размер: 112KB

Загрузка…
Отмена
Сохранить