|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- // // // //
- // Основа избы
- // // // //
-
-
- мир.разобрать({
- заголовок: "Колобку здесь быть",
- изображения: {
- дом: {
- ширина: 2000,
- высота: 600,
- вид: {
- background: "url(р/сцены/изба.jpg)",
- },
- },
- },
- объекты: {
- полСлева: {
- x: 0,
- y: 580,
- ширина: 355,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- },
- полКрышки: {
- x: 357,
- y: 580,
- ширина: 135,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- },
- полСправа: {
- x: 495,
- y: 580,
- ширина: 1505,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- },
- стол: {
- x: 1253,
- y: 420,
- ширина: 610,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- подоконник: {
- x: 1673,
- y: 375,
- ширина: 200,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- angle: -0.0698,
- collisionFilter: {
- category: 2,
- },
- },
- },
- },
- });
-
-
-
- // // // //
- // Игрок
- // // // //
-
- мир.разобрать({
- изображения: {
- колобок: {
- ширина: 70,
- высота: 70,
- вид: {
- background: "url(р/колобок/колобок_неподвижен.png)",
- "z-index": 10,
- },
- },
- },
- объекты: {
- кирпич: {
- x: 1170,
- y: 350,
- высота: 20,
- ширина: 40,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- isStatic: false,
- inertia: Infinity,
- },
- },
- },
- игрок: {
- объект: "кирпич",
- скорость: [5, 12.5],
- клавиши: ["ArrowLeft", "ArrowRight", "ArrowUp"],
- },
- слежение: {
- колобок: {
- объект: "кирпич",
- изображение: "колобок",
- смещение: [-35, -60],
- скорость: 1,
- },
- камера: {
- объект: "кирпич",
- скорость: 0.1,
- },
- },
- маскиПрыжков: {
- игрок: {
- объект: "кирпич",
- скорость: -1,
- маски: [1, 1|2],
- },
- },
- звуки: {
- прыжокИгрока: {
- события: ["игрок начал прыжок"],
- файл: "р/звуки/331381__qubodup__public-domain-jump-sound.wav",
- },
- },
- });
-
- // // // //
- // Платформы и объекты печи
- // // // //
-
- мир.разобрать({
- объекты: {
- фундаментПечи: {
- x: 570,
- y: 470,
- ширина: 550,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- полка1: {
- x: 660,
- y: 335,
- ширина: 40,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- полка2: {
- x: 767,
- y: 335,
- ширина: 40,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- полка3: {
- x: 855,
- y: 335,
- ширина: 40,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- полкаСамовара: {
- x: 975,
- y: 355,
- ширина: 70,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- лежанкаПечки: {
- x: 600,
- y: 242,
- ширина: 330,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- основаниеТрубыПечки: {
- x: 937,
- y: 175,
- ширина: 130,
- высота: 10,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- collisionFilter: {
- category: 2,
- },
- },
- },
- самовар: {
- x: 650,
- y: 300,
- ширина: 70,
- высота: 120,
- вид: {
- background: "url(р/вещи/самовар.png) no-repeat scroll 0% 0% / contain",
- },
- физика: {
- isStatic: false,
- //inertia: Infinity,
- },
- },
- },
- });
-
-
- // // // //
- // Подкидывание стрелы
- // // // //
-
-
- мир.разобрать({
- объекты: {
- сенсор: {
- x: 1280,
- y: 400,
- ширина: 120,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- isStatic: true,
- isSensor: true,
- },
- },
- стрела: {
- x: 1230,
- y: 350,
- высота: 30,
- ширина: 200,
- вид: {
- display: "inline-block",
- background: "url(р/вещи/стрела.png) no-repeat scroll 0% 0% / contain",
- transform: "scaleX(-1)",
- },
- физика: {
- isStatic: false,
- inertia: Infinity,
- collisionFilter: {
- category: 4,
- },
- },
- },
- лук: {
- x: 1250,
- y: 200,
- ширина: 100,
- вид: {
- background: "url(р/отладка/основа.jpg)",
- display: "none",
- },
- физика: {
- isStatic: true,
- collisionFilter: {
- category: 4,
- },
- },
- },
- },
- столкновения: {
- стрелаНачало: {
- объекты: ["кирпич", "сенсор"],
- событие: "сенсор стрелы",
- },
- стрелаКонец: {
- объекты: ["стрела", "лук"],
- событие: "стрела и лук",
- },
- },
- маскиПрыжков: {
- стрела: {
- объект: "стрела",
- скорость: -1,
- маски: [0, 2|4]
- },
- },
- звуки: {
- зарядкаЛука: {
- события: ["закинули стрелу"],
- файл: "р/звуки/543927__eminyildirim__pistol-gun-cocking.wav",
- },
- },
- });
-
- function ПодкидываниеСтрелы() {
- this.создать = function() {
- this.времяСтрелы = null;
- this.времяПриземления = null;
- this.подкинули = false;
- 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;
- }
- else if (
- (событие == "стрела и лук") &&
- this.закинули &&
- this.завершить
- ) {
- мир.события.уведомить("закинули стрелу");
- мир.события.отписать(this);
- this.завершить();
- }
- };
-
- 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.закинули = true;
- }
- };
-
- // Конструктор.
- this.создать();
- }
-
- мир.подкидываниеСтрелы = new ПодкидываниеСтрелы();
- мир.подкидываниеСтрелы.завершить = function() {
- мир.подкидываниеСтрелы = null;
- };
-
-
- // // // //
- // Отладка событий
- // // // //
-
-
- function ОтладкаСобытий() {
- this.обработатьСобытие = function(событие) {
- if (событие == "закинули стрелу")
- {
- //console.debug("событие", событие);
- }
- };
-
- // Конструктор.
- мир.события.подписать(this);
- }
-
- мир.отладкаСобытий = new ОтладкаСобытий();
-
|