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
Neaktivní uživatel:19.2.2015 17:48

(předem se omlouvám za pravopisné chybi) ahoj,nerad zase otravuju ale potřeboval bych pomoc,určitě znáte Diablo (1 a 2,3.dílu se to netíká(myslím)) a taky určitě výte jak tam probíhá pohyb(kliknete na mapu a postava pohybuje smněrem ke kliknutí(ale ne přímo(pouze ve čtyřech smněrech)) a já bych potřeboval vědět jak by se to dal uďelat pohyb ve jako v již zmíněné hře(já mám zkrátka rád retro a ve své hře bich ocenil takovíto retro-pohyb)

ps.v životě sem nepoužil script,ale rád se to naučím(tak něják tuším že to bude potřeba :D )

Odpovědět
19.2.2015 17:48
Neaktivní uživatelský účet
Avatar
DooM
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
DooM:20.2.2015 18:00

Koukni se na nějaký tutoriál ohledně pathfindingu.

Nahoru Odpovědět
20.2.2015 18:00
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
Neaktivní uživatel:20.2.2015 19:32

Ahoj,

Dominik odkazoval na pathfinding, dovoluji si zkonkretizovat:

Nejlepším řešení pro tebe bude A* algoritmus, teorii načteš na wiki, aplikace pro tebe určitě bude hračka :) GM / GMS má vestavěné funkce pro A* algoritmus, nicméně jsou velmi špatně optimalizované, doporučuji využít některé z .dll knihoven , případně pokud ovládáš C/C++ sepsat knihovnu vlastní.

Hodně zdaru :)

Nahoru Odpovědět
20.2.2015 19:32
Neaktivní uživatelský účet
Avatar
chain
Tvůrce
Avatar
chain:21.2.2015 9:25

Ak som to spravne pochopil tak chces aby sa pohy udial vzdy len na xovej alebo yovej osy. Nemal by byt problem dat do stepu:
If distance_to_po­int(ciel.x,ci­el.y)>0 then {
a=chosse(1,2);
If a=1 then {
If ciel.x<x then x-=1;
If ciel.x>x then x+=1;}
If a=2 then {
If ciel.y>y then y+=1;
If ciel.y<y then y-=1; }
}
Dany algoritmus je skor modelovy, chce to este optimalizaciu rychlosti, skor som to napisal popisne aby bolo jasne ako vyhradit pohyb len do jedneho smeru.

 
Nahoru Odpovědět
21.2.2015 9:25
Avatar
Odpovídá na chain
Neaktivní uživatel:21.2.2015 9:50

Ahoj, jen korekce toho co jsi napsal:

if (distance_to_point(target.x,target.y)>2)
{
a=choose(1,2);
switch(a)
 {
 case 1:
  {
  if target.x<x {x-=1;}
  else {x += 1;}
  break;
  }
 case 2:
  {
  if target.y<y {y-=1;}
  else {y += 1;}
  break;
  }
 }
}

Algoritmus jako takový funkční, nicméně iq algoritmu = 0, použij A* tohle je funkční jen za předpokladu,že ve hře nemáš žádné překážky.

pro chain: nedoporučuji u funkce distance_to_po­int(a1,a2,a3) požadovat vzdálenost 0, dělá to nepořádek, protože instance absolutní vzdálenosti k jiné instanci použitím tohoto algoritmu obvykle nedosáhne (za předpokladu, že instance nejsou trvale snapované.)

Hodně zdaru :)

Nahoru Odpovědět
21.2.2015 9:50
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:25.2.2015 6:51

to je pro mně trochu složité...nešlo bi to uďelat nějak přes grip(mříšku)...a nebo bi mi sem někdo mohl hodit link s návodem ohleďe pathfindingu(nic čemu bich rozumňel jsem nenašel(našel jsem toho spoustu,ale angličtina mi moc nejde))

Nahoru Odpovědět
25.2.2015 6:51
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:25.2.2015 21:38

kašlete na to,už jsem to vyřešil :D (z yoyogames.com jsem si stáhl extenzion který nabízí funkcy adv_move_towar­ds_point(ikona se jmenuje advenced move toward point a jde o předělání klasické funkce s tím rozdílem že je tam o 8 funkcí více,mezi ně patří i simple move(classic,di­agonal,disabled)))

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
25.2.2015 21:38
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 7 zpráv z 7.