Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.
Текущая версия | Ваш текст | ||
Строка 1: | Строка 1: | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | var entityTypeBird = MobRegistry.registerEntity("bird-blue"); // создаем тип моба - птицу | + | MobSpawnRegistry.registerSpawn("bird-blue", .2); ''// относительно редкий спавн птицы''<br/> var blue_bird_texture = new Texture("bird_blue.png"); ''// создадим объект текстуры''<br/> blue_bird_texture.setResolution(128, 64); ''// зададим разрешение ''<br/> blue_bird_texture.setPixelScale(2); ''// установим масштабирование ''<br/> ''/* Так же этот код можно записать короче, в таком формате: ''var blue_bird_texture = new Texture("bird_blue.png").setResolution(128, 64).setPixelScale(2);''*/''<br/> var blue_bird_texture = new Texture("bird_blue.png").setResolution(128, 64).setPixelScale(2);''// загружаем текстуру и задаем ей разрешение и масштабирование. ''<br/> var blue_bird_model = new EntityModel(); ''// создаем модель нашей птицы ''<br/> blue_bird_model.setTexture(blue_bird_texture);''// устанавливаем ей текстуру // создаем анимацию модели: она будет содержать 16 кадров, каждый из которых будет занимать 0.5 тика (1 цикл = 1 взмах крыльев = 8 тиков) ''<br/> blue_bird_model.createAnimation(16, function(frame) { ''// создание кадра ''<br/> var render = new Render(); ''// создаем рендер ''<br/> var partObj = [ ''// создаем объект, описывающий часть body, в нашем случае это вся модель''<br/> {<br/> type: "box",<br/> coords: {<br/> x: 0,<br/> y: 16,<br/> z: 0<br/> },<br/> size: {<br/> x: 5,<br/> y: 4,<br/> z: 9<br/> },<br/> uv: {<br/> x: 20,<br/> y: 0<br/> }<br/> },''// тело ''<br/> {<br/> type: "box",<br/> coords: {<br/> x: 0,<br/> y: 14,<br/> z: -4<br/> },<br/> size: {<br/> x: 4,<br/> y: 4,<br/> z: 6<br/> },<br/> uv: {<br/> x: 0,<br/> y: 0<br/> }<br/> }, ''// голова ''<br/> {<br/> type: "box",<br/> coords: {<br/> x: 0,<br/> y: 14,<br/> z: -6.5<br/> },<br/> size: {<br/> x: 1,<br/> y: 1,<br/> z: 3<br/> },<br/> uv: {<br/> x: 0,<br/> y: 16<br/> }<br/> }, ''// клюв''<br/> {<br/> type: "box",<br/> coords: {<br/> x: 0,<br/> y: 14,<br/> z: 6<br/> },<br/> size: {<br/> x: 3,<br/> y: 1,<br/> z: 8<br/> },<br/> uv: {<br/> x: 20,<br/> y: 0<br/> }<br/> }, ''// хвост'' <br/> {<br/> type: "box",<br/> coords: {<br/> x: 0,<br/> y: 20,<br/> z: 0<br/> },<br/> size: {<br/> x: 3,<br/> y: 4,<br/> z: 1<br/> },<br/> uv: {<br/> x: 0,<br/> y: 11<br/> }<br/> }, ''// ноги ''<br/> ]; ''// крылья - более сложная структура и она генерируется в цикле, при том именно крылья меняют свое положение каждый кадр. ''<br/> var position = Math.sin(frame / 16 * Math.PI * 2); ''// рассчитываем позицию крыльев - синус здесь принимает значения от 0 до 2 * pi и поэтому проходит 1 период, принимая значения от -1 до 1, что нам и нужно (взмахи) ''<br/> for (var i = 0; i < 5; i++) { ''// каждое крыло состоит из 5 частей, чем дальше от тела часть, тем сильнее изменение позиции и тем меньше эта часть по длине ''<br/> partObj.push({<br/> type: "box",<br/> size: {<br/> x: 1,<br/> y: 1,<br/> z: 8 - i<br/> },<br/> uv: {<br/> x: 20,<br/> y: 0<br/> },<br/> coords: {<br/> x: 2.5 + i,<br/> y: position * i + 15,<br/> z: 0<br/> }<br/> }); ''// правое крыло ''<br/> partObj.push({<br/> type: "box",<br/> size: {<br/> x: 1,<br/> y: 1,<br/> z: 8 - i<br/> },<br/> uv: {<br/> x: 20,<br/> y: 0<br/> },<br/> coords: {<br/> x: -2.5 - i,<br/> y: position * i + 15,<br/> z: 0<br/> }<br/> }); ''// левое крыло ''<br/> }<br/> render.setPart("head", partObj, {});''// устанавливаем наше описание части в рендер'' <br/> return render;''// возвращаем рендер для данного кадра''<br/> }, 0.5); |
− | entityTypeBird.customizeVisual({ // задаем нашу модель как основную (будет установлена при старте) | + | |
− | + | var entityTypeBird = MobRegistry.registerEntity("bird-blue"); ''// создаем тип моба - птицу ''<br/> entityTypeBird.customizeVisual({ ''// задаем нашу модель как основную (будет установлена при старте) ''<br/> getModels: function() {<br/> return {<br/> "main": blue_bird_model<br/> };<br/> }<br/> });<br/> entityTypeBird.customizeDescription({''// кроме этого задаем размер хитбокса птице, чтобы он был поменьше ''<br/> getHitbox: function() {<br/> return {<br/> w: 0.3,<br/> h: 0.3<br/> };<br/> }<br/> });<br/> Item.registerUseFunctionForID(280, function(coords, item, block) {<br/> coords = coords.relative;<br/> Entity.spawnCustom("bird-blue", coords.x + .5, coords.y + .5, coords.z + .5);<br/> }); | |
− | |||
− | |||
− | |||
− | |||
− | }); | ||
− | entityTypeBird.customizeDescription({// кроме этого задаем размер хитбокса птице, чтобы он был поменьше | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | }); | ||
− | Item.registerUseFunctionForID(280, function(coords, item, block) { | ||
− | |||
− | |||
− | }); |