K 0.3.0
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||||
<title>К 0.2.0</title>
|
<title>К 0.3.0</title>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/phaser@3.54.0/dist/phaser.min.js"></script>
|
||||||
<style>
|
<style>
|
||||||
html, body {
|
html, body {
|
||||||
@@ -27,6 +27,7 @@
|
|||||||
<div id="родитель"></div>
|
<div id="родитель"></div>
|
||||||
<script src="игра/001.мир.js"></script>
|
<script src="игра/001.мир.js"></script>
|
||||||
<script src="игра/011.phaser.js"></script>
|
<script src="игра/011.phaser.js"></script>
|
||||||
|
<script src="игра/108.группы.js"></script>
|
||||||
<script src="игра/109.управление.js"></script>
|
<script src="игра/109.управление.js"></script>
|
||||||
<script src="игра/110.колобок.js"></script>
|
<script src="игра/110.колобок.js"></script>
|
||||||
<script src="игра/111.изба.js"></script>
|
<script src="игра/111.изба.js"></script>
|
||||||
|
|||||||
44
К/игра/108.группы.js
Normal file
44
К/игра/108.группы.js
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
/*
|
||||||
|
*
|
||||||
|
* Реакции
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
СоздатьГруппыСущностей = мир =>
|
||||||
|
{
|
||||||
|
мир.каркас = мир.сцена.physics.add.staticGroup();
|
||||||
|
мир.платформы = мир.сцена.physics.add.staticGroup();
|
||||||
|
мир.вещи = мир.сцена.add.group();
|
||||||
|
мир.враги = мир.сцена.add.group();
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
НастроитьСтолкновениеГруппСущностей = мир =>
|
||||||
|
{
|
||||||
|
мир.сцена.physics.add.collider(мир.вещи, мир.каркас);
|
||||||
|
мир.сцена.physics.add.collider(мир.вещи, мир.платформы);
|
||||||
|
мир.сцена.physics.add.collider(мир.враги, мир.каркас);
|
||||||
|
мир.сцена.physics.add.collider(мир.враги, мир.платформы);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
*
|
||||||
|
* Последовательность
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
мир.разобрать(`
|
||||||
|
создать сцену
|
||||||
|
создать группы сущностей
|
||||||
|
настроить столкновение групп сущностей
|
||||||
|
`);
|
||||||
|
|
||||||
@@ -21,40 +21,13 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
СоздатьГруппыСущностей = мир =>
|
|
||||||
{
|
|
||||||
мир.каркас = мир.сцена.physics.add.staticGroup();
|
|
||||||
мир.платформы = мир.сцена.physics.add.staticGroup();
|
|
||||||
мир.враги = мир.сцена.add.group();
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
|
||||||
|
|
||||||
|
|
||||||
СоздатьКолобка = мир =>
|
СоздатьКолобка = мир =>
|
||||||
{
|
{
|
||||||
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
|
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
|
||||||
мир.колобок.depth = 10;
|
мир.колобок.depth = 10;
|
||||||
мир.колобок.body.setSize(50);
|
мир.колобок.body.setSize(50);
|
||||||
мир.колобок.setBounceY(0.1);
|
// Портит анимацию прыжков!
|
||||||
|
//мир.колобок.setBounceY(0.1);
|
||||||
мир.сцена.anims.create({
|
|
||||||
key: "неподвижен",
|
|
||||||
frames: [{ key: "колобок", frame: 0 }],
|
|
||||||
frameRate: 20,
|
|
||||||
})
|
|
||||||
мир.сцена.anims.create({
|
|
||||||
key: "движение",
|
|
||||||
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
|
|
||||||
frameRate: 20,
|
|
||||||
repeat: -1,
|
|
||||||
})
|
|
||||||
мир.сцена.anims.create({
|
|
||||||
key: "прыжок",
|
|
||||||
frames: [{ key: "колобок", frame: 24 }],
|
|
||||||
frameRate: 20,
|
|
||||||
})
|
|
||||||
|
|
||||||
// Следить за колобком камерой.
|
// Следить за колобком камерой.
|
||||||
const камера = мир.сцена.cameras.main;
|
const камера = мир.сцена.cameras.main;
|
||||||
@@ -65,26 +38,41 @@
|
|||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ОпределятьСтолкновениеКолобкаИВраговСГруппамиСущностей = мир =>
|
СоздатьАнимацииКолобка = мир =>
|
||||||
|
{
|
||||||
|
var анимации = мир.сцена.anims;
|
||||||
|
анимации.create({
|
||||||
|
key: "колобок-неподвижен",
|
||||||
|
frames: [{ key: "колобок", frame: 0 }],
|
||||||
|
frameRate: 20,
|
||||||
|
})
|
||||||
|
анимации.create({
|
||||||
|
key: "колобок-движение",
|
||||||
|
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
|
||||||
|
frameRate: 20,
|
||||||
|
repeat: -1,
|
||||||
|
})
|
||||||
|
анимации.create({
|
||||||
|
key: "колобок-прыжок",
|
||||||
|
frames: [{ key: "колобок", frame: 24 }],
|
||||||
|
frameRate: 20,
|
||||||
|
})
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
НастроитьСтолкновениеКолобка = мир =>
|
||||||
{
|
{
|
||||||
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
|
мир.сцена.physics.add.collider(мир.колобок, мир.каркас);
|
||||||
|
мир.сцена.physics.add.collider(мир.колобок, мир.вещи);
|
||||||
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);
|
мир.столкновениеПлатформы = мир.сцена.physics.add.collider(мир.колобок, мир.платформы);
|
||||||
|
|
||||||
|
|
||||||
мир.сцена.physics.add.collider(мир.враги, мир.каркас);
|
|
||||||
мир.сцена.physics.add.collider(мир.враги, мир.платформы);
|
|
||||||
|
|
||||||
var враг = мир.сцена.physics.add.sprite(750, 100, "основа");
|
|
||||||
враг.setScale(5, 5).refreshBody();
|
|
||||||
враг.depth = 10;
|
|
||||||
мир.враги.add(враг);
|
|
||||||
|
|
||||||
|
|
||||||
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
|
var столкновениеВраги = мир.сцена.physics.add.collider(мир.колобок, мир.враги);
|
||||||
столкновениеВраги.overlapOnly = true;
|
столкновениеВраги.overlapOnly = true;
|
||||||
столкновениеВраги.collideCallback = function(a, b) {
|
столкновениеВраги.collideCallback = function(a, b) {
|
||||||
мир.уведомить("столкновение с врагом");
|
мир.уведомить("столкновение с врагом");
|
||||||
console.debug("столкновение с врагом");
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -97,7 +85,6 @@
|
|||||||
if (!мир.управление)
|
if (!мир.управление)
|
||||||
{
|
{
|
||||||
мир.колобок.setVelocityX(0);
|
мир.колобок.setVelocityX(0);
|
||||||
мир.колобок.anims.play("неподвижен");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -105,13 +92,11 @@
|
|||||||
if (мир.управление.направление == -1)
|
if (мир.управление.направление == -1)
|
||||||
{
|
{
|
||||||
x = -200;
|
x = -200;
|
||||||
мир.колобок.anims.play("движение");
|
|
||||||
мир.колобок.flipX = true;
|
мир.колобок.flipX = true;
|
||||||
}
|
}
|
||||||
else if (мир.управление.направление == 1)
|
else if (мир.управление.направление == 1)
|
||||||
{
|
{
|
||||||
x = 200;
|
x = 200;
|
||||||
мир.колобок.anims.play("движение");
|
|
||||||
мир.колобок.flipX = false;
|
мир.колобок.flipX = false;
|
||||||
}
|
}
|
||||||
мир.колобок.setVelocityX(x);
|
мир.колобок.setVelocityX(x);
|
||||||
@@ -119,7 +104,34 @@
|
|||||||
if (мир.управление.прыжок && мир.колобок.body.touching.down)
|
if (мир.управление.прыжок && мир.колобок.body.touching.down)
|
||||||
{
|
{
|
||||||
мир.колобок.setVelocityY(-570);
|
мир.колобок.setVelocityY(-570);
|
||||||
мир.колобок.anims.play("прыжок");
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
|
АнимироватьКолобка = мир => {
|
||||||
|
var есть = "";
|
||||||
|
if (мир.колобок.anims.currentAnim)
|
||||||
|
{
|
||||||
|
есть = мир.колобок.anims.currentAnim.key;
|
||||||
|
}
|
||||||
|
|
||||||
|
var надо = "колобок-неподвижен";
|
||||||
|
if (мир.управление && мир.управление.прыжок && !мир.колобок.body.touching.down)
|
||||||
|
{
|
||||||
|
надо = "колобок-прыжок";
|
||||||
|
}
|
||||||
|
else if (мир.колобок.body.velocity.x != 0)
|
||||||
|
{
|
||||||
|
надо = "колобок-движение";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (есть != надо)
|
||||||
|
{
|
||||||
|
мир.колобок.anims.play(надо);
|
||||||
|
мир.уведомить("изменили анимацию колобка");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -128,7 +140,7 @@
|
|||||||
|
|
||||||
|
|
||||||
ОтключитьСтолкновениеСПлатформами = мир => {
|
ОтключитьСтолкновениеСПлатформами = мир => {
|
||||||
мир.столкновениеПлатформы.active = false;
|
мир.столкновениеПлатформы.active = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -136,19 +148,19 @@
|
|||||||
|
|
||||||
|
|
||||||
ВключитьСтолкновениеСПлатформами = мир => {
|
ВключитьСтолкновениеСПлатформами = мир => {
|
||||||
мир.столкновениеПлатформы.active = true;
|
мир.столкновениеПлатформы.active = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
// // // //
|
// // // //
|
||||||
|
|
||||||
|
|
||||||
ОстановитьВрагов = мир => {
|
ОстановитьПередвижениеВещей = мир => {
|
||||||
var враги = мир.враги.getChildren();
|
var вещи = мир.вещи.getChildren();
|
||||||
for (var н in враги)
|
for (var н in вещи)
|
||||||
{
|
{
|
||||||
var враг = враги[н];
|
var вещь = вещи[н];
|
||||||
враг.body.stop();
|
вещь.body.stop();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -164,13 +176,16 @@
|
|||||||
загрузить ресурсы сцены
|
загрузить ресурсы сцены
|
||||||
загрузить ресурсы колобка
|
загрузить ресурсы колобка
|
||||||
создать сцену
|
создать сцену
|
||||||
создать группы сущностей
|
|
||||||
создать колобка
|
создать колобка
|
||||||
определять столкновение колобка и врагов с группами сущностей
|
создать анимации колобка
|
||||||
|
настроить столкновение колобка
|
||||||
изменили управление
|
изменили управление
|
||||||
переместить колобка
|
переместить колобка
|
||||||
остановить врагов
|
|
||||||
столкновение с врагом
|
столкновение с врагом
|
||||||
отключить столкновение с платформами
|
отключить столкновение с платформами
|
||||||
|
обновить сцену
|
||||||
|
анимировать колобка
|
||||||
|
изменили анимацию колобка
|
||||||
|
остановить передвижение вещей
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
{
|
{
|
||||||
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
|
мир.сцена.load.image("изба", "ресурсы/сцены/изба.jpg");
|
||||||
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
|
мир.сцена.load.image("основа", "ресурсы/отладка/основа.jpg");
|
||||||
|
мир.сцена.load.image("молоко", "ресурсы/вещи/банка_молока.png");
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -101,7 +102,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
x: 995,
|
x: 995,
|
||||||
y: 350, // НАДО 345, чтобы не допрыгиать без помощи кота.
|
y: 345, // НАДО 345, чтобы не допрыгиать без помощи кота.
|
||||||
ширина: 4,
|
ширина: 4,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -152,18 +153,21 @@
|
|||||||
|
|
||||||
|
|
||||||
СоздатьВрагов = мир => {
|
СоздатьВрагов = мир => {
|
||||||
|
var враг = мир.сцена.physics.add.sprite(750, 100, "основа");
|
||||||
|
враг.setScale(5, 5).refreshBody();
|
||||||
|
враг.depth = 10;
|
||||||
|
мир.враги.add(враг);
|
||||||
|
};
|
||||||
|
|
||||||
console.debug("создать врагов");
|
|
||||||
/*
|
|
||||||
var враг = мир.сцена.physics.add.sprite(150, 100, "основа");
|
|
||||||
//мир.враги.add(враг);
|
|
||||||
|
|
||||||
мир.сцена.physics.add.collider(враг, мир.каркас);
|
// // // //
|
||||||
мир.сцена.physics.add.collider(враг, мир.платформы);
|
|
||||||
*/
|
|
||||||
|
|
||||||
//var враг = мир.враги.create(100, 100, "основа");//.setOrigin(0, 0);
|
|
||||||
//враг.setScale(часть.ширина, 1).refreshBody();
|
СоздатьВещи = мир => {
|
||||||
|
var молоко = мир.сцена.physics.add.sprite(750, 400, "молоко");
|
||||||
|
молоко.setScale(0.5, 0.5).refreshBody();
|
||||||
|
молоко.depth = 10;
|
||||||
|
мир.вещи.add(молоко);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@@ -183,5 +187,6 @@
|
|||||||
создать платформы
|
создать платформы
|
||||||
позволить платформам пропускать прыжки
|
позволить платформам пропускать прыжки
|
||||||
создать врагов
|
создать врагов
|
||||||
|
создать вещи
|
||||||
`);
|
`);
|
||||||
|
|
||||||
|
|||||||
BIN
К/ресурсы/вещи/банка_молока.png
Normal file
BIN
К/ресурсы/вещи/банка_молока.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 30 KiB |
Reference in New Issue
Block a user