GMC Bulgaria

Здравейте ( Вход | Регистрация )

Изброяване?, Има ли начин?
martinmarks
коментар 01:00:21, 25-August-2010, Wednesday
Коментар #1


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Разработвам едно AI enemy в играта си, и трябва да му задам да ходи на obj_wall например, получи се! Ето и част от скрипта gravity=(!place_meeting(x,y+1,obj_wall)) Обаче има и други обекти по които трябва да стъпва например като obj_grass и се чудих дали може да направя така, че да изброявам по кое може, добавих и едно and ето: gravity=(!place_meeting(x,y+1,obj_wall and obj_grass)) После пуснах и не стана заседва и на двата обекта! И незнам как да направя така, че да изброя повече от един обект по който може да върви като AI? Ако може малко помощ?

Направо ето ви целия скрипт:
Код
if(random(50)<1 && dir<1) dir+=1;
if(random(50)<1 && dir>-1) dir-=1;
if(place_meeting(x+movspeed*dir,y,obj_wall)) dir=0;
x+=movspeed*dir;
if(dir!=0) image_xscale=dir;
gravity=(!place_meeting(x,y+1,obj_wall))*grav;
if(dir==0) {
    if(gravity==0) {
        sprite_index=spr_enemy1_stand;
    } else {
        sprite_index=spr_enemy1_still;
    }
} else {
    if(gravity==0) {
        sprite_index=spr_enemy1_walk;
    } else {
        sprite_index=spr_enemy1_moving;
    }
}
if(vspeed>10) vspeed=10;
if(collision_rectangle(x+dir*16,y+16,x+dir*movspeed*20,y-maxjump,obj_wall,true,true)>0 && gravity==0) {
    if(random(4)<1&&!place_meeting(x,y-24,obj_wall) && dir!=0) {
        
        ok=0;
        vx=x;
        vy=y;
        x-=999999;
        y-=999999;
        with(obj_wall) {
            if(collision_rectangle(other.vx+other.dir*16,other.vy+16,other.vx+other.dir*other.movspeed*20,other
.vy-other.maxjump,id,true,false)) {
                if(!place_meeting(x-(other.vx<x)+(other.vx>=x),y-1,obj_wall) && collision_line(x,y,other.vx,other.vy,obj_wall,true,true)<0) {
                    other.ok=other.vy-y+16;
                }
            }
        }
        x=vx;
        y=vy;
        if(ok>0) vspeed=-floor(sqrt(2*(ok+64/grav)))*(grav);;
    }
}


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
 
Start new topic
Отговори
martinmarks
коментар 10:05:17, 25-August-2010, Wednesday
Коментар #2


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Ами аз като сложих and се оцвети в син цвят и тогава помислих, че ще се получи нещо. Пробвах на Яверт начина, оказа се много по труден, започнаха да възникват грешки и се отказах, за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн... Ами попринцип and и & в англииския са едно и също. O_o


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
TALANTO
коментар 10:22:10, 25-August-2010, Wednesday
Коментар #3


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Цитат(martinmarks @ 11:05:17, 25-August-2010, Wednesday) *
за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн...

Това за което говориш е добра идея, но нямах него предвид, ето ти пример:
Ето каква е идеята имаш два обекта wall и grass и още един обект, който да им е родител.
Какво означава родител - всичко което го има родителя се наследява от децата (wall и grass). Демек ако имаш в create instance_destroy() то и grass и wall ще го имат.
Това долу може да не го четеш, защото ще те обърка.
Код
Ако обаче в grass направиш друг create това означава, че този от родителя няма да работи. Ако искаш и двата да се изпалнят трябва да сложиш event_inherited()

По просто казано правиш това на снимката и за двата обекта (wall и grass).

След като си го направил в героя player не е нужно да пишеш едно и също за wall и grass а направо за обекта родител (parent).

Ето и примера (не успях да направя точно това със заставането върху обекта, но все пак примера не е за гравитация, а да разбереш родителите).
Прикачен файл  parent.gm6 ( 7.69k ) Брой сваляния: 5

Виж в обекта player има само един collision event с парент именно това е идеята - да пишеш за един обект, а да се изпълнява за много.

Надявам се, че ме разбра. В твоя случай трябва да е:
Цитат
gravity=(!place_meeting(x,y+1,parent))


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post

Пишете в тази тема
- martinmarks   Изброяване?   01:00:21, 25-August-2010, Wednesday
- - яверт   Пробвай gravity=(!place_meeting(x,y+1,obj_wall...   07:14:31, 25-August-2010, Wednesday
- - TALANTO   Щом е станало с obj_wall пробвай в другия обкет да...   08:13:01, 25-August-2010, Wednesday
- - Hella_from_Hell   Това "and" още щом го видите и трябва да...   09:34:26, 25-August-2010, Wednesday
|- - яверт   Цитат(Hella_from_Hell @ 10:34:26, 25...   09:55:09, 25-August-2010, Wednesday
|- - Hella_from_Hell   Цитат(яверт @ 10:55:09, 25-Augus...   07:25:11, 26-August-2010, Thursday
|- - TALANTO   Цитат(Hella_from_Hell @ 08:25:11, 26...   09:29:07, 26-August-2010, Thursday
|- - яверт   Цитат(Hella_from_Hell @ 08:25:11, 26...   09:35:17, 26-August-2010, Thursday
- - TALANTO   Не виждам разлика между and и &&. Ако има ...   10:01:03, 25-August-2010, Wednesday
- - martinmarks   Ами аз като сложих and се оцвети в син цвят и тога...   10:05:17, 25-August-2010, Wednesday
|- - яверт   Цитат(martinmarks @ 11:05:17, 25...   10:13:53, 25-August-2010, Wednesday
|- - TALANTO   Цитат(martinmarks @ 11:05:17, 25...   10:22:10, 25-August-2010, Wednesday
- - martinmarks   Аха, ами аз направих един ivisible wall и после а ...   10:52:23, 25-August-2010, Wednesday
- - TALANTO   Вече редактирах горния коментар примера е в него. ...   10:57:23, 25-August-2010, Wednesday
- - martinmarks   Таланто много ти благодаря, и товя начи се получи ...   11:34:04, 25-August-2010, Wednesday


Reply to this topicStart new topic
1 потребител(и) четат тази тема (1 гости и 0 скрити)
0 Потребител(и):

 



Олекотена версия Час: 16:39:57, 03.07.25