NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
Avatar
Neaktivní uživatel:23.4.2015 21:39

ahoj,mám další problém(nemyslíte že mám poslední dobou až moc problémů??) uďelal jsem jednoduchého nepřítele který střílí [if distance_to_object < 100 ...] ,ale to po mně střílí ze všech úhlů,já bych potřeboval aby po mně střílel jen v určitém rozsahu (např.direction(0)+- 20 stupňů),neví někdo jak to uďelat

budu rád když mi pomůžete :)

Odpovědět
23.4.2015 21:39
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:24.4.2015 5:10

Ahoj, následující přidej do stepu nepřítele:

if (instance_number(oPlayer) > 0)
{
dir_dif = point_direction(x,y,oPlayer.x,oPlayer.y);
if (abs(dir_dif)<20)
   {
   // střelba
   }
}

Nech sa páčí ;)

Editováno 24.4.2015 5:11
Nahoru Odpovědět
24.4.2015 5:10
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2015 5:15

Edit:

if (abs(dir_dif) < 20 && abs(dir_dif) > 0)
   {
   // střelba
   }

Zapoměl jsem...

Nahoru Odpovědět
24.4.2015 5:15
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:24.4.2015 5:21

nefunguje...nechce střílet,(tady je celí kód)if enemy_shoot = 1 and distance_to_ob­ject(o_plaer) < 80 and (instance_num­ber(oPlayer) > 0)
{
dir_dif = point_directi­on(x,y,o_plaer­.x,o_plaer.y);
if (abs(dir_dif)<20)
alarm[2] = 360
enemy_shoot = 0}

Nahoru Odpovědět
24.4.2015 5:21
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2015 5:27

OMG děláš si srandu?? Tak přemýšlej trochu...

if enemy_shoot = 1 and distance_to_object(o_plaer) < 80 and (instance_number(oPlayer) > 0)

o_plaer <> oPlayer...

Editováno 24.4.2015 5:28
Nahoru Odpovědět
24.4.2015 5:27
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:24.4.2015 5:32

hele,snažil jsem se to opravit enemy_shoot_dir = point_directi­on(x,y,o_plaer­.x,o_plaer.y)

if enemy_shoot = 1 and distance_to_ob­ject(o_plaer) < 80 and(abs(enemy_sho­ot_dir) < 20 and abs(dir_dif) > -20){

alarm[2] = 360
enemy_shoot = 0}

nevíš kde je chyba??

Nahoru Odpovědět
24.4.2015 5:32
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2015 5:35

Tak tohle jsem už dlouho neviděl....
wow, it´s fuking awesome....

abs(dir_dif) > -20){
Nahoru Odpovědět
24.4.2015 5:35
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:24.4.2015 6:04

Kus zfrojového kódu, vytrženého z kontextu:

enemy_shoot_dir = point_directi­on(x,y,o_plaer­.x,o_plaer.y)

if (enemy_shoot = 1 && distance_to_ob­ject(o_plaer) < 150 && ( (abs(enemy_sho­ot_dir) < 360 && (abs(enemy_sho­ot_dir) > 160)))){
alarm[2] = 180
enemy_shoot = 0}

druhou možností je využít collision line:

if (!collision_line(x,y,oPlayer.x,oPlayer.y,wall,0,0))
{

}

(místo té podmínky, a wall dosadíš tvůj objekt reprezentující zdi a totéž platí pro hráče)

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
24.4.2015 6:04
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Neaktivní uživatel:24.4.2015 6:19

hele já ti to tiknul za to cos psal na skype

///Střelba
enemy_shoot_dir = point_directi­on(x,y,o_plaer­.x,o_plaer.y)

if (enemy_shoot = 1 and distance_to_ob­ject(o_plaer) < 150 and ( (abs(enemy_sho­ot_dir) < 340 and (abs(enemy_sho­ot_dir) > 20)))){
alarm[2] = 180
enemy_shoot = 0}

jsem to dal sem kdybi mněl někdo stejný nebo podobný problém

Nahoru Odpovědět
24.4.2015 6:19
Neaktivní uživatelský účet
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 9 zpráv z 9.