Browse Source

K 0.3.0

master
parent
commit
26dd509faf
5 changed files with 122 additions and 57 deletions
  1. +2
    -1
      К/index.html
  2. +44
    -0
      К/игра/108.группы.js
  3. +61
    -46
      К/игра/110.колобок.js
  4. +15
    -10
      К/игра/111.изба.js
  5. BIN
      К/ресурсы/вещи/банка_молока.png

+ 2
- 1
К/index.html View File

@@ -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
- 0
К/игра/108.группы.js View 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(мир.враги, мир.платформы);
};


/*
*
* Последовательность
*
*/


мир.разобрать(`
создать сцену
создать группы сущностей
настроить столкновение групп сущностей
`);


+ 61
- 46
К/игра/110.колобок.js View File

@@ -21,70 +21,58 @@
// // // // // // // //




СоздатьГруппыСущностей = мир =>
СоздатьКолобка = мир =>
{ {
мир.каркас = мир.сцена.physics.add.staticGroup();
мир.платформы = мир.сцена.physics.add.staticGroup();
мир.враги = мир.сцена.add.group();
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
мир.колобок.depth = 10;
мир.колобок.body.setSize(50);
// Портит анимацию прыжков!
//мир.колобок.setBounceY(0.1);

// Следить за колобком камерой.
const камера = мир.сцена.cameras.main;
камера.startFollow(мир.колобок, false, 0.1, 0.1);
}; };




// // // // // // // //




СоздатьКолобка = мир =>
СоздатьАнимацииКолобка = мир =>
{ {
мир.колобок = мир.сцена.physics.add.sprite(100, 500, "колобок");
мир.колобок.depth = 10;
мир.колобок.body.setSize(50);
мир.колобок.setBounceY(0.1);

мир.сцена.anims.create({
key: "неподвижен",
var анимации = мир.сцена.anims;
анимации.create({
key: "колобок-неподвижен",
frames: [{ key: "колобок", frame: 0 }], frames: [{ key: "колобок", frame: 0 }],
frameRate: 20, frameRate: 20,
}) })
мир.сцена.anims.create({
key: "движение",
анимации.create({
key: "колобок-движение",
frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }), frames: мир.сцена.anims.generateFrameNumbers("колобок", { start: 23, end: 1 }),
frameRate: 20, frameRate: 20,
repeat: -1, repeat: -1,
}) })
мир.сцена.anims.create({
key: "прыжок",
анимации.create({
key: "колобок-прыжок",
frames: [{ key: "колобок", frame: 24 }], frames: [{ key: "колобок", frame: 24 }],
frameRate: 20, frameRate: 20,
}) })

// Следить за колобком камерой.
const камера = мир.сцена.cameras.main;
камера.startFollow(мир.колобок, false, 0.1, 0.1);
}; };




// // // // // // // //




ОпределятьСтолкновениеКолобкаИВраговСГруппамиСущностей = мир =>
НастроитьСтолкновениеКолобка = мир =>
{ {
мир.сцена.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();
for (var н in враги)
ОстановитьПередвижениеВещей = мир => {
var вещи = мир.вещи.getChildren();
for (var н in вещи)
{ {
var враг = враги[н];
враг.body.stop();
var вещь = вещи[н];
вещь.body.stop();
} }
}; };


@@ -164,13 +176,16 @@
загрузить ресурсы сцены загрузить ресурсы сцены
загрузить ресурсы колобка загрузить ресурсы колобка
создать сцену создать сцену
создать группы сущностей
создать колобка создать колобка
определять столкновение колобка и врагов с группами сущностей
создать анимации колобка
настроить столкновение колобка
изменили управление изменили управление
переместить колобка переместить колобка
остановить врагов
столкновение с врагом столкновение с врагом
отключить столкновение с платформами отключить столкновение с платформами
обновить сцену
анимировать колобка
изменили анимацию колобка
остановить передвижение вещей
`); `);



+ 15
- 10
К/игра/111.изба.js View File

@@ -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 View File

Before After
Width: 113  |  Height: 164  |  Size: 30KB

Loading…
Cancel
Save