Четверг, 09 Мая 2024, 12:04

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Мои вопросы по моей игре (Делаю РПГ, требуется помощь)
Мои вопросы по моей игре
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:17 | Сообщение # 61
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, да как обычно: Move Fixed, галочки во все стороны.

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


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

Energy Wars
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:36 | Сообщение # 63
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, а вверх , вниз и во все остальные стороны? Кстати, я когда тестировал, заметил, что спрайт при таком раскладе постоянно дергается. Как сделать так, чтобы он шел в случайную сторону, через несколько шагов останавливался, шел в другую сторону, и при этом не дергался?

Посоветуйте, где скачать VB6 :C
GameMixДата: Понедельник, 27 Декабря 2010, 12:39 | Сообщение # 64
старожил
Сейчас нет на сайте
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([b]объект игрока, спрайт влево-вниз[/b])};
if direction = 270 {object_set_sprite(объект игрока, спрайт вниз)};
if direction = 315 {object_set_sprite(объект игрока, спрайт вправо-вниз)};


Steel Standoff - 2D аркада.
Мои статьи


Сообщение отредактировал аТнОтХоАн - Понедельник, 27 Декабря 2010, 12:40
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:41 | Сообщение # 65
GML ProgrammeR
Сейчас нет на сайте
Quote (Apelsinoviy_kot)
Как сделать так, чтобы он шел в случайную сторону, через несколько шагов останавливался, шел в другую сторону, и при этом не дергался?


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

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

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


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

Energy Wars
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:42 | Сообщение # 67
GML ProgrammeR
Сейчас нет на сайте
Требую ответа. За код спасибо. happy

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

Quote (Dva_Kota)
Тебе нужен бот?

Yes. Зверя делаю. Спрайты выдираю.


Посоветуйте, где скачать VB6 :C
Dva_KotaДата: Понедельник, 27 Декабря 2010, 12:46 | Сообщение # 68
заслуженный участник
Сейчас нет на сайте
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
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:49 | Сообщение # 69
GML ProgrammeR
Сейчас нет на сайте
Quote (Dva_Kota)
ще вопрос: тебе нужно чтобы бот "гулял", а когда игрок подойдет близко - бежал к нему и наносил урон?

Все верно.


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

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

Energy Wars
TheApKoTДата: Понедельник, 27 Декабря 2010, 12:52 | Сообщение # 71
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, с анимацией. 4 кадра. Думаешь, я зря у тебя программку просил?)

Посоветуйте, где скачать VB6 :C
AGENTX001Дата: Понедельник, 27 Декабря 2010, 12:57 | Сообщение # 72
почётный гцупер
Сейчас нет на сайте
А вы не будете против, если я некоторый приведённый тут код использую в своей игре?
Dva_KotaДата: Понедельник, 27 Декабря 2010, 13:12 | Сообщение # 73
заслуженный участник
Сейчас нет на сайте
Вот пример кода из моей игры (неимного вырезал лишнее, немного добавил того чего небыло):

Код в 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
AGENTX001Дата: Понедельник, 27 Декабря 2010, 13:17 | Сообщение # 74
почётный гцупер
Сейчас нет на сайте
Dva_Kota, в разроботчики тя всуну)
TheApKoTДата: Понедельник, 27 Декабря 2010, 13:31 | Сообщение # 75
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, объясни первый код.
Quote (Dva_Kota)
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;
     }

И еще, советую скачать игру(ссыль в первом посте), там ты сможешь посмотреть возможности игры, и не писать ненужного кода типа
Quote (Dva_Kota)
canshoot=true; //Можно ли стрелять

. За код спасибо, посмотрю.


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

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


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

Energy Wars
TheApKoTДата: Понедельник, 27 Декабря 2010, 13:52 | Сообщение # 77
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, может, тебе скинуть исходник? Просто у меня много проблем с кодом, в основном из-за того, что я его плохо понимаю. Раньше я с AI не работал, и мне непонятно.

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


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

Energy Wars
TheApKoTДата: Понедельник, 27 Декабря 2010, 13:56 | Сообщение # 79
GML ProgrammeR
Сейчас нет на сайте
Dva_Kota, Можешь по буковкам рассказать, что это означает? Не врубаюсь. wacko

Посоветуйте, где скачать VB6 :C
Dva_KotaДата: Понедельник, 27 Декабря 2010, 14:02 | Сообщение # 80
заслуженный участник
Сейчас нет на сайте
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
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Мои вопросы по моей игре (Делаю РПГ, требуется помощь)
  • Страница 4 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

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