Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:23.8.2012 11:08

Cestou půjde řada nepřátel a po okrajích budou věže; já chci aby každá věž střílela na nepřítele který je veži nejblíž, nebo na náhodného nepřítele který je veži v určitém dosahu, ale nevím jak to udělat. Předem děkuji za odpovědi

Odpovědět
23.8.2012 11:08
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
xM4tHeWx
Tvůrce
Avatar
xM4tHeWx:23.8.2012 11:59

Vo veži

if instance_exists(o_enemy)>=1 //ak existuje viac ako 1nepriatel
{
    if distance_to_object(o_enemy)<80 //ak je nepriatel blizsie ako 80
    {
        instance_create(x,y,o_strela); // vytvorí strelu
    }
}

V strele

target = instance_nearest(o_enemy); //nastaví ciel na nepriatela
move_towards_point(target.x,target.y,16); //nastaví smer a rýchlosť na ciel a rýchlosť 16

myslím že by to tak malo ísť..

 
Nahoru Odpovědět
23.8.2012 11:59
Avatar
ereg
Člen
Avatar
ereg:23.8.2012 13:40

kdyby te zajimal :) nahodny vyber nejblizsi instance:

Information about object: o_hrac

Sprite: sprite0
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Create Event:
execute code:

idn=0;  // pauza mezi strelbou
idn1=0; // ---//---


Alarm Event for alarm 0:
execute code:

idn=0;  // pauza mezi strelbou


Alarm Event for alarm 1:
execute code:

idn1=0; // pauza mezi strelbou


 Step Event:
execute code:

if instance_exists(o_nepritel)>=1  && idn==0 //ak existuje viac ako 1nepriatel
{
    if distance_to_object(o_nepritel)<80  //ak je nepriatel blizsie ako 80
    {
        idn=instance_create(x,y,o_strela); // vytvorí strelu
        target = instance_nearest(x, y, o_nepritel); //nastaví ciel na nepriatela
        idn.direction=point_direction(x, y, target.x, target.y); //nastaví smer
        idn.image_angle=idn.direction; // natoci strelu smerem kam leti
        idn.speed=5;  // nastavi rychlost
        idn=-1;  // zapne pauzu ve strelbe
        alarm[0]=60; // nastavi cas vypnuti pauzy ve strelbe
    }
}

if instance_exists(o_npc)>=1 && idn1==0 //ak existuje viac ako 1nepriatel
{
    poc=0; // pocitadlo instanci v dostrelu
    with(o_npc) {
        if distance_to_object(o_hrac)<100{ // testuje vsechny nepratele jestli je nepritel bliz nez 100
            o_hrac.idnx[o_hrac.poc]=id; // pokud je bliz, zapise hraci id instance o_npc
            o_hrac.poc+=1;  // zvysi pocitadlo instanci
            image_alpha=.5; // nastavi pruhlednost pro efekt dostrelu
        }
        else {image_alpha=1;} // zrusi pruhlednost, efekt mimo dostrel
    }
    if idnx[0]>0 {  // pokud je alespon 1 o_npc na dostrel pokracuj
        target1=idnx[irandom_range(0,poc-1)];  // vyber nahodne cil ze zapsanych id
        idnx[0]=0; // resetuj 1. id , protze pokud priste nejake najde vzdy se zapise nejdrive do idnx[0]
        idn1=instance_create(x,y,o_strela); // vytvorí strelu
        idn1.direction=point_direction(x, y, target1.x, target1.y); //nastaví smer
        idn1.image_angle=idn1.direction;  // natoci strelu smerem kam leti
        idn1.speed=5;  // nastavi rychlost
        idn1.image_alpha=.5; // nastavi pruhlednost strele, efekt aby sly strely lepe rozeznat.
        idn1=-1;  // zapne pauzu ve strelbe
        alarm[1]=30; // nastavi cas vypnuti pauzy ve strelbe
    }
}

______________________________________________________

Information about object: o_nepritel

Sprite: sprite1
Solid: false
Visible: true
Depth: -1
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Mouse Event for Left Button:
execute code:

x=mouse_x;
y=mouse_y;

______________________________________________________

Information about object: o_strela

Sprite: sprite2
Solid: true
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Collision Event with object o_nepritel:
execute code:

instance_destroy();


Collision Event with object o_npc:
execute code:

instance_destroy();

______________________________________________________

Information about object: o_npc

Sprite: sprite3
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>

Mouse Event for Left Button:
execute code:

x=mouse_x;
y=mouse_y;

______________________________________________________
 
Nahoru Odpovědět
23.8.2012 13:40
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:23.8.2012 14:10

xM4tHeWx funguje to, ale kdyz ta vez toho nepritele nestihne znicit, tak po nem strili i kdyz uz neni v dosahu.

Nahoru Odpovědět
23.8.2012 14:10
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Ghost4Man
matesax:23.8.2012 14:19

Tak tam přidej, že vzdálenost musí být menší než X...

Respektive můžeš kontrolovat objekt na který střílíš a dát podmínku, je-li vzdálenost aktuálního nepřítele (jeho id si uložíš do proměnné v momentě, kdy na něj poprvé zaútočíš) větší než...

 
Nahoru Odpovědět
23.8.2012 14:19
Avatar
ereg
Člen
Avatar
ereg:23.8.2012 18:16

v mem prikladu v obou postupech prestane o_hrac(vez)strilet kdyz neni nadosah :)

 
Nahoru Odpovědět
23.8.2012 18:16
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:23.8.2012 20:44

Ještě potřebuji, aby se věž otáčela za tím nepřítelem, na kterého střílí; zkoušel jsem to, ale nějak jsem na to nepřišel. Předem díky za odpověď.

Nahoru Odpovědět
23.8.2012 20:44
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Ghost4Man
matesax:23.8.2012 20:51

To ti tu pomalu můžeme poslat celou hru... :)

 
Nahoru Odpovědět
23.8.2012 20:51
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:23.8.2012 20:56

Já bych si to udělal sám, ale nevím jak udělat, aby se ta věž otáčela za tím nepřítelem, na kterého střílí.

Nahoru Odpovědět
23.8.2012 20:56
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
matesax
Tvůrce
Avatar
Odpovídá na Ghost4Man
matesax:23.8.2012 21:06

Když na něj začneš střílet, musíš v tom momentu znát jeho ID - či tak něco. To si uložíš a pak jen budeš aktualizovat úhel otočení věže podle polohy objektu s uloženým ID...

 
Nahoru Odpovědět
23.8.2012 21:06
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Ghost4Man
Kit:23.8.2012 21:06

Odečteš od sebe souřadnice věže a cíle, vydělíš vzdáleností a vynásobíš délkou hlavně. Tím dostaneš souřadnici jejího konce.

Alespoň tak nějak bych to dělal v něčem jiném, než GM.

Nahoru Odpovědět
23.8.2012 21:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Ghost4Man
David Hartinger:23.8.2012 21:19
point_direction(x1,y1,x2,y2);
Nahoru Odpovědět
23.8.2012 21:19
You are the greatest project you will ever work on.
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Ghost4Man
David Hartinger:23.8.2012 21:20

Raději dodám, že výsledný úhel dosadíš do image_angle té věže.

Nahoru Odpovědět
23.8.2012 21:20
You are the greatest project you will ever work on.
Avatar
Ghost4Man
Člen
Avatar
Odpovídá na David Hartinger
Ghost4Man:23.8.2012 21:23
point_direction(x1,y1,x2,y2);

Jasně, tak jsem to dělal, ale potřebuju souřadnice určité instance nepřítele.

Nahoru Odpovědět
23.8.2012 21:23
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
ereg
Člen
Avatar
ereg:23.8.2012 22:56

poradil bych ti, at si prostudujes priklad v mem prispevku vyse. mas tam vse co potrebujes vedet.
ale asi je to zbytecna rada.:(

 
Nahoru Odpovědět
23.8.2012 22:56
Avatar
Ghost4Man
Člen
Avatar
Odpovídá na ereg
Ghost4Man:24.8.2012 8:43

Já to tvý zkusím, ono to přece jen není tak dlouhý jak to vypadá.

Nahoru Odpovědět
24.8.2012 8:43
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:24.8.2012 8:48

Jinak, nevíte někdo proč ty kódy tady mají akorát změněnej font, a jinak je to prostý písmo? Proř to není modrý?

Nahoru Odpovědět
24.8.2012 8:48
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:24.8.2012 8:49

Proč ×

Nahoru Odpovědět
24.8.2012 8:49
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
Ghost4Man
Člen
Avatar
Odpovídá na ereg
Ghost4Man:24.8.2012 8:56

eregu, v tvém kodu jsou objekty hrac, npc a nepritel; jaký je rozdíl mezi nepritelem a npc? (jako v tom kódu)

Nahoru Odpovědět
24.8.2012 8:56
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:24.8.2012 11:53

eregu nějak to nefunguje

Nahoru Odpovědět
24.8.2012 11:53
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
ereg
Člen
Avatar
ereg:24.8.2012 13:01

cely priklad je Show object information o cele hre.
tedy navod jak nastavit objekty.
sprity si musis nastavit jake chces, ale protze jsou vzdy prirazeny k objektu tak je to jen na tobe jestli o_hrac bude vypadat jako popelnice, clovek nebo vez.

pro jistotu ti jsem ten priklad nahral sem:
http://ulozto.cz/…se-tower-zip

v prikladu je pouzita prace s jinym objektem(idn.i­mage), s vsemi objekty urciteho typu(with).

posunovani o_nepritel a o_npc je takova nouzovka(o vic ani neslo)

pokud neco nebude jasne nebo jiny problem nepis dotaz" nejak to nefunguje" :)
popis problem celymi vetami ci souvetimi a nejlepe rozvitymi. ;-)

 
Nahoru Odpovědět
24.8.2012 13:01
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Ghost4Man
David Hartinger:24.8.2012 13:20

Díky, modifikoval jsem styly a zapomněl na kódy ve fóru.

Nahoru Odpovědět
24.8.2012 13:20
You are the greatest project you will ever work on.
Avatar
Ghost4Man
Člen
Avatar
Odpovídá na ereg
Ghost4Man:25.8.2012 10:12

Sorry, v tu chvíli jsem byl trochu naštvaný, tak jsem to jen tak napsal... :D

Nahoru Odpovědět
25.8.2012 10:12
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 23 zpráv z 23.