Разбиране на изкуствения интелект за разработка на игри

Добре дошли!

Изкуственият интелект може да бъде приложен по много различни начини, но днес ще разгледам форма на AI, която ще ви позволи да изчислявате разстояния между набори от обекти, което може да бъде полезно за това дали на NPC е дадено разрешение да стреля по враг или не играчът.

Геометрията, която ще разгледаме, се състои предимно от аналитична геометрия, която следва основните принципи на декартовата координатна система. Ще модифицираме формулата за геометрично разстояние на 2D разстояние, за да изчислим разстоянията на 3D обекти по-късно в урока…

Първата ни стъпка ще бъде да напишем нашия основен C++ код. След това следващата ни стъпка ще бъде да внедрим формулите в нашия код и след това да изчислим разстоянията и да изготвим предварително зададените процедури. Моля, обърнете внимание: не обхващам начини за извличане на стойностите X,Y,Z на вашите игрови обекти, така че това зависи от вас.

Първо, за да разберем самия код, нека да разгледаме геометричната формула за 2D разстояние…

разстояние = DeltaX2 – DeltaX1 sqrd + DeltaY2 – DeltaY1 sqrd SQRT

Ако прочетете формулата, трябва да разберете кода, който написах без никакъв проблем.

Демонстрационен код: (*Пълен източник*)

// **ЗАБЕЛЕЖКА: Трябва да включите iostream и math.h, EzineArticles премахва синтаксиса на включването.

дълго изчисляване_2D(дълго x1,дълго x2, дълго y1, дълго y2);

дълъг sqrd(стойност);

използване на пространство от имена std;

intmain()

{

цена

  • Внедрявам прототипи на функции Calculate_2D и sqrd.
  • Претоварвам функцията Calculate_2D с дадени X,Y стойности.
  • Създавам sqrd функция, която умножава параметъра си по себе си (* на квадрат *) – тъй като math.h не съдържа функция sqrd.
  • Използвайки основните примитиви на формулата за 2D разстояние, прилагам променливите X,Y и изчислителните процедури.

    Добре, така че можем да напишем някои IF оператори, за да проверим дали нашият играч е в X,Y диапазона на нашия NPC. И ако е така, бихме могли да атакуваме NPC, нали?

    върната_ai_value = изчисляване_2D(X1,X2,Y1,Y2); // returned_ai_value ще има върнатата стойност на calc_2D

    if(returned_ai_value >= 5 && npc_settokill)

    {

    // npc прави нещо на играча тук…

    }

    Моля, обърнете внимание, returned_ai_value е променлива, която съдържа разстоянието, изчислено от нашата формула.!

    Това е всичко за този урок, надявам се, че ви е харесал и сте научили нещо ново. Ако ви е харесало, моля, оставете коментар и или обратна връзка и аз ще напиша продължението на тази статия, което ще включва 3D AI…

    На Ваше разположение,

    Арик Холанд

    Empfohlene Artikel

    Schreibe einen Kommentar

    Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert