Суббота, 30 Ноября 2024, 05:31

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
Dva_KotaДата: Понедельник, 27 Декабря 2010, 16:19 | Сообщение # 341 | Тема: Мои вопросы по Game Maker
заслуженный участник
Сейчас нет на сайте
2. Нужно проверять недо любого объекта, а до ближайшего:
Code
if distance_to_object(instance_nearest(obj_enemy)) < 100
{ instance_create(x,y,obj_puly)}

должно работать


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 15:27 | Сообщение # 342 | Тема: Вопрос - Ответ (Game Maker)
заслуженный участник
Сейчас нет на сайте
URGINSAN, посмотри эту тему:
http://gmc.yoyogames.com/index.php?showtopic=104784


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 15:12 | Сообщение # 343 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Вычисляется выражение direction/45
округляется до целой части функцией round()
В зависимости от полученного числа выбираем при помощи оператора switch.

Тебе не понятно как работает switch или не понятно зачем вычислять direction/45?


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:52 | Сообщение # 344 | Тема: Проблема с загрузкой стрипа!
заслуженный участник
Сейчас нет на сайте
Ты его загружаешь в проект?
И как именно загружаешь?
Наверное ты нажимаешь кнопку "Загрузить спрайт".
Чтобы загрузить стрип нужно нажать кнопку "редактировать" в появившемся окне нажать "Файл"--> "Создать из стрипа..."
Потом выбираешь стрип и количество кадров.

Но вообще strip maker предназначен для создания стрпиов с целью использования их как внешних ресурсов. Если ресурсы в самой игре, проще добавить кадры прямо из отдельных файлов.


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:36 | Сообщение # 345 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Конкретно по этому блоку

или вообще по всему коду?


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:28 | Сообщение # 346 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Quote (Dva_Kota)
То есть, чтобы он обходил твердые объекты, мне нужно это заменить на мой твердый объект?

Если у тебя только один объект, который нужно обходить, то да.
Если несколько, сделай один объект с любым именем, напиши его имя вместо obj_building_mask_base и сделай родительским для всех остальных.
Если нужно чтобы обходил ВСЕ твердые предметы - замени эту функцию на mp_potential_step() (она почти такая же, подробнее почитай в справке).

А что подробнее рассказать? Что именно не понятно (я просто не знаю что еще добавить к тому что я писал выше...)
Можешь еще про switch в справке прочитать.

А, ну наверное я забыл написать что

Code
case 0: sprite_index=sp_ai_01_anim_00; // если получили 0 ставим спрайт с именем sp_ai_01_anim_00
case 1: sprite_index=sp_ai_01_anim_01; // если получили 1 ставим спрайт с именем sp_ai_01_anim_01


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Понедельник, 27 Декабря 2010, 14:29
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:14 | Сообщение # 347 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Моб двигается при помощи
mp_potential_step_object(go_to_player.x,go_to_player.y,speed_defolt,obj_building_mask_base)
и обходит предметы obj_building_mask_base
или сделай для всех объектов, которые он должен объодить, один родительский и напили его сюда, или используй вместо функции mp_potential_step_object() функцию mp_potential_step()

Добавлено (27.12.2010, 14:14)
---------------------------------------------



Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Понедельник, 27 Декабря 2010, 14:14
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:02 | Сообщение # 348 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Apelsinoviy_kot, можешь скинуть, но я не знаю когда у меня будет время посмотреть. Исправлять что-то в ближайшее время точно времени не будет, может-быть смогу что-то посоветовать.

Добавлено (27.12.2010, 14:02)
---------------------------------------------
Ок. По буквам:

switch round(direction/45) //делим direction на 45 и округляем полученное значение. direction, как известно, угол поаорота объекта. Он может быть от 0 до 360 градусов. Разделив direction на 45 мы получаем число от 0 до 8. Если угол поворота от 0 до 22 градусов - получим 0, если от 22 до 22+45=67 градусов - 1 и.т.д. В зависимости от полученного числа выбираем спрайт:
{
case 0: sprite_index=sp_ai_01_anim_00;
// если получили 0
break;
case 1: sprite_index=sp_ai_01_anim_01;
// если получили 1
break;

И т.д.

Это все для изометрическоц игры. Для TDS всю эту конструкцию можно заменить строкой

Code
image_angle=direction;               //Поворот изображения угол direction


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Понедельник, 27 Декабря 2010, 14:25
Dva_KotaДата: Понедельник, 27 Декабря 2010, 13:54 | Сообщение # 349 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Еще вот забыл: в первом блоке добавь еще (думаю понятно куда, я в посте выше исправил):
Code
     case 8: sprite_index=sp_ai_01_anim_00;
              break;


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 13:49 | Сообщение # 350 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Первый блок делает выбор спрайта в зависимости от поворота моба.

Я тебе, просто скинул весь основной код моба, на тот случай если он потом еще кому-то пригодится (чтобы потом не задавали вопросы "почему у меня ошибка?".


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 13:12 | Сообщение # 351 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Вот пример кода из моей игры (неимного вырезал лишнее, немного добавил того чего небыло):

Код в step:

Code
switch round(direction/45)
      {
      case 0: sprite_index=sp_ai_01_anim_00;
              break;
      case 1: sprite_index=sp_ai_01_anim_01;
              break;
      case 2: sprite_index=sp_ai_01_anim_02;
              break;
      case 3: sprite_index=sp_ai_01_anim_03;
              break;
      case 4: sprite_index=sp_ai_01_anim_04;
              break;
      case 5: sprite_index=sp_ai_01_anim_05;
              break;
      case 6: sprite_index=sp_ai_01_anim_06;
              break;
      case 7: sprite_index=sp_ai_01_anim_07;
              break;
      case 8: sprite_index=sp_ai_01_anim_00;
              break;  
      }

go_to_player = instance_nearest(x,y,obj_player)         //Определяем ближайшего игрока (код делался для игры с несколькими игроками)
        
if distance_to_object(go_to_player)>320                  //Если расстояние до игрока больше 20 - спрайт стнадартный
      {
      if mp_step alarm[0]=1
      mp_step=false;
      }
else                    //Иначе - спрайт атаки (в этом примере только спрайты ходьбы, по этому спрайт атаки не прописан, прописана только сама атака)
      {
      /*if atak_sp = true
          {
          sprite_index = loader_sprites.spr_ai_01_atak
          atak_sp = false
          }*/
      mp_step=true;
      speed=0
      mp_potential_step_object(go_to_player.x,go_to_player.y,speed_defolt,obj_building_mask_base)
      mp_potential_settings (20,10,10,true)                //Параметры поиска пути для ближнего расстояния      
      alarm[0]=-1

      if (place_meeting(x,y,obj_player))             //При столкновении с игроком наносить ему урон и уменьшать скорость
          {
          if (canshoot)
              {
              go_to_player.hp-=round((damage_ai+random(3)))
              canshoot=false
              alarm[1]=30
              }
          speed=-1.9
          }
      }

if (hp<0)
      {
      instance_destroy();
      }

Код в событии alarm0:

Code
speed=random_range(1.5,2.5); //Выставляем случайную скорость в диапазоне от 1.5 до 2.5
direction=irandom(360);  //Выбираем случайное направление
alarm[0]=irandom_range(40,80);  //Устанавливаем через сколько шагов опять сменить скорость и направление.

Код в событии alarm1:

Code
canshoot=true; //Можно ли стрелять

В событии Create:

Code
hp=100;
speed=2;
direction=irandom(360);
alarm[0]=30;
speed_defolt=1.5;
mp_step=false;
damage_ai=10;
canshoot=true;

Можешь в событии Create установить еще и скорость анимации. Или в степе привяжи значение скорости анимации к скорости движения (в этом примере моб может двигаться с разной скоростью.
Делается это таким кодом:

Code
image_speed=speed*1

или
Code
image_speed=speed_defolt*1

Вот тут точно не скажу. Нужно проверить оба кода, какой работает правильно. (скорее всего второй). Вместо 1 нужно поставить число, которое подбирается экспериментальным путем.

Добавлено (27.12.2010, 13:12)
---------------------------------------------

Quote (Apelsinoviy_kot)
А вы не будете против, если я некоторый приведённый тут код использую в своей игре?

Если будешь последние коды использовать, напиши что у меня их взял. smile


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Понедельник, 27 Декабря 2010, 13:55
Dva_KotaДата: Понедельник, 27 Декабря 2010, 12:51 | Сообщение # 352 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Спрайты у тебя будут с анимацией или без?

Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 12:46 | Сообщение # 353 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Quote (аТнОтХоАн)
Apelsinoviy_kot, вот код движения в разные стороны:

if direction = 0 {object_set_sprite(объект игрока, спрайт вправо)};
if direction = 45 {object_set_sprite(объект игрока, спрайт вправо-вверх)};
if direction = 90 {object_set_sprite(объект игрока, спрайт вверх)};
if direction = 135 {object_set_sprite(объект игрока, спрайт влево-вверх)};
if direction = 180 {object_set_sprite(объект игрока, спрайт влево)};
if direction = 225 {object_set_sprite(объект игрока, спрайт влево-вниз)};
if direction = 270 {object_set_sprite(объект игрока, спрайт вниз)};
if direction = 315 {object_set_sprite(объект игрока, спрайт вправо-вниз)};

Мне кажется этот код лучше было бы сделать через switch.

Apelsinoviy_kot, у меня где-то было именно то что тебе нужно. Сейчас найду... наверное...

Добавлено (27.12.2010, 12:46)
---------------------------------------------
Еще вопрос: тебе нужно чтобы бот "гулял", а когда игрок подойдет близко - бежал к нему и наносил урон?


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 12:41 | Сообщение # 354 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Тебе нужно движение в восьми направлениях? Тогда эта тема:
http://gcup.ru/forum/36-11724-1

Если нужно только в четырех направлениях - убери оттуда лишний код.

Что значит шел в случайную сторону? Тебе нужен бот?


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 12:29 | Сообщение # 355 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Значит это изменением direction.
Допиши ниже код:
Code
if (direction=0)
{
sprite_index = спрайт вправо;
}
else
{
sprite_index = спрайт влево;
}


Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 11:58 | Сообщение # 356 | Тема: Мои вопросы по моей игре
заслуженный участник
Сейчас нет на сайте
Зависит от того как ты сделал движение (заменой скорости на противоположную по знаку, изменением direction, передвижение с помощью изменения координаты x).

Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Понедельник, 27 Декабря 2010, 09:01 | Сообщение # 357 | Тема: делаю библиотеку для создания платформера
заслуженный участник
Сейчас нет на сайте
Думаю нужно сделать чтобы можно было указывать

Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Воскресенье, 26 Декабря 2010, 23:06 | Сообщение # 358 | Тема: Помогите мне очень нужно
заслуженный участник
Сейчас нет на сайте
Это не одно и то же. Попробуй присвоить значение переменной с помощью "==".
А вот сравнить с помощью "=" можно.


Новый пример инвентаря! /20.06.2012/

Energy Wars


Сообщение отредактировал Dva_Kota - Воскресенье, 26 Декабря 2010, 23:08
Dva_KotaДата: Воскресенье, 26 Декабря 2010, 22:50 | Сообщение # 359 | Тема: Справки без перевода.
заслуженный участник
Сейчас нет на сайте
Deswing, ты, наверное, имеешь ввиду уроки и статьи?

Новый пример инвентаря! /20.06.2012/

Energy Wars
Dva_KotaДата: Воскресенье, 26 Декабря 2010, 12:56 | Сообщение # 360 | Тема: Из внешних папок в исходник
заслуженный участник
Сейчас нет на сайте
там разные боты есть, вроде бы.

Новый пример инвентаря! /20.06.2012/

Energy Wars
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг