Diskuze: čtverečky
Člen
Zobrazeno 8 zpráv z 8.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
Zní to, jakoby měl špatně vyřešené hledání nejbližšího červeného čtverce, možná sem zkus hodit jak jsi tohle konkrétně řešil. Hádám, že se ti všechny pohybují k prvnímu nebo k poslednímu vytvořenému červenému čtverci, což asi bude to, jak ti to teď hádám funguje.
ted nemám po ruce kod, ale je to tak jak říkáš, přes foreach se vytvoří kolekce 100 červených a pravděpodobně k prvnímu z nich směřují všechny modré.. jinak ta detekce funguje, pokud vynechám všechny možný rotace a směrování, přes něco ala (zkráceně a osekaně) :
foreach (item in kolekcem) foreach (item_ in kolekcec)
if (distance(item, item_) < 10
teď kod nějaký rotace a směru
item.position += nejaky_direction + time;
Z tohodle těžko říct, asi by to chtělo přesnej kód. Jako podstata je dobrá, chybu můžeš mít třeba v tom nejaky_direction, jestli to není metoda s parametry obou itemů, žeby ti počítal směr jen k jedné kostce vždy. Takže bych se zaměřil asi na její vnitřek.
foreach (item in kolekcem) foreach (item_ in kolekcec)
if (distance(item, item_) < 10
teď kod nějaký rotace a směru
item.position += nejaky_direction + time;
item_.position += nejaky_direction + time;
V tomhle to nebude, on chce, aby se pohybovaly jen ty jedny - modré -
item.
Podle mě to musí být někde v tom výpočtu "nejaky_direction".
z toho kódu vyplývá, že všechny budou putovat k poslednímu čtverečku z kolekce, který má vzdálenost menší jak 10, takže se klidně může stát, že všechny budou putovat ke stejnému. spíš bych volil tuhle variantu
tempCerveny = kolekcec[0]; //čistě jen proto aby nebyl null;
foreach (modry in kolekcem) {
foreach (cerveny in kolekcec)
// hledáme jestli je blíž než zatím ten nejbližší
if (distance(modry, cerveny) < distance(modry, tempCerveny))
tempCerveny = cerveny;
// ted nejaky kod kdy posles modry ke ctverci na kterej odkazuje tempCerveny
}
Zobrazeno 8 zpráv z 8.