Изброяване?, Има ли начин? |
Здравейте ( Вход | Регистрация )
Изброяване?, Има ли начин? |
![]()
Коментар
#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 ![]() The Stone Of Death DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100% |
|
|
![]() |
![]()
Коментар
#2
|
|
![]() Редовен потребител ![]() ![]() ![]() Група: Потребител Коментари: 216 Регистриран: 13.06.07 Град: българия Потребител № 627 ![]() |
Ами аз като сложих and се оцвети в син цвят и тогава помислих, че ще се получи нещо. Пробвах на Яверт начина, оказа се много по труден, започнаха да възникват грешки и се отказах, за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн... Ами попринцип and и & в англииския са едно и също. O_o
-------------------- Подписа бе съкратен от модератор.
I am a ![]() The Stone Of Death DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100% |
|
|
![]()
Коментар
#3
|
|
![]() BEST ENTRY award - зад.1/2008 ![]() Група: VIP Коментари: 597 Регистриран: 19.04.07 Град: Kюстендил Потребител № 539 ![]() |
за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн... Това за което говориш е добра идея, но нямах него предвид, ето ти пример: Ето каква е идеята имаш два обекта wall и grass и още един обект, който да им е родител. Какво означава родител - всичко което го има родителя се наследява от децата (wall и grass). Демек ако имаш в create instance_destroy() то и grass и wall ще го имат. Това долу може да не го четеш, защото ще те обърка. Код Ако обаче в grass направиш друг create това означава, че този от родителя няма да работи. Ако искаш и двата да се изпалнят трябва да сложиш event_inherited() По просто казано правиш това на снимката и за двата обекта (wall и grass). ![]() След като си го направил в героя player не е нужно да пишеш едно и също за wall и grass а направо за обекта родител (parent). Ето и примера (не успях да направя точно това със заставането върху обекта, но все пак примера не е за гравитация, а да разбереш родителите). ![]() Виж в обекта player има само един collision event с парент именно това е идеята - да пишеш за един обект, а да се изпълнява за много. Надявам се, че ме разбра. В твоя случай трябва да е: Цитат gravity=(!place_meeting(x,y+1,parent))
-------------------- "Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!. |
|
|
![]() ![]() |
Олекотена версия | Час: 16:39:57, 03.07.25 |