12# Block breaker 8.
Určitě se vám během testování stalo, že se vám míček zasekl jak v horizontální tak vertikální smyčce. Tomu se pokusíme předcházet náhodnou změnou letu míčku po nárazu na stěnu. Nemusí ta změna být výrazná, ale i malá změna nám pomůže se nezaseknout v případě že míček dopadne pod úhlem 90°. Proto si otevřeme Ball.cs ve Visual Studiu a začneme upravovat.
Začneme vytvořením serializované proměnné formátu float, která nám bude určovat maximální možnou randomizaci dopadu míčku. Dáme ji jméno maxRandom.
Další část již budeme upravovat v čísti, kde dochází ke kolizi. To již máme připravené, protože náš míč vydává při kolizi zvuk. Vytvoříme si zde nový vektor randomMovement. Do něj si uložíme nový vektor X, Y.
Zatím je naše X a Y podtržené, protože místo něj tam musíme dát náhodná čísla. K tomu budeme používat Random.Range kde budeme chtít čísla od 0f do maxRandom.
Kód nám sice dává smysl a je napsaný správně, ale i tak nám Visual Studio hlásí, že máme v Random chybu. To proto, že díky knihovně System , očekává Random.Equals nebo Random.ReferenceEquals. Ani jedno nepoužíváme a v ten moment nám dělá knihovna Systém jen problémy. Navíc, když se kouknete na první řádky třídy, vidíte, že některé knihovny jsou tmavě a některé světle. Tmavě jsou ty, které nepoužíváme a než jsme vytvořili řádek s Random, tak jsme knihovnu System ani nevyužívali. Můžeme to snadno ověřit zakomentováním problematického řádku (Přidáme // na jeho začátek). Tím se z řádku stane komentář a nebude spuštěn.
Když odstraníme první 3 knihovny, error zmizí, protože začneme používat pouze knihovnu UnityEngine. Jako poslední krok je přidat k aktuálnímu pohybu míčku náš náhodně generovaný pohyb. aktuální pohyb míčku získáte pomocí GetComponent<Rigidbody2d>, kde vezmete velocity míčku a k tomu přičtete vector randomMovement. Tady bude drobná změna oproti tomu jak věci znáte. Už jsme si říkali že ++ je zvýšit o 1, — je snížit o 1 a nyní += je přičíst k proměnné, do které ukládáme.
Uložit, přepnout do unity a v Assets -> Prefab -> Ball. V inspektoru pak nastavíme maximální hodnotu náhodnosti. Nedoporučuji vysoká čísla, protože se pak může stát, že vám míč zrychlí na nezvládnutelnou rychlo nebo náhodně zpomalí na téměř nulu. Stačí málo, aby se nezasekl. Já mám pouze 0,2.
Hotovo. Toto by mělo zabránit zasekávání míčku a čeká nás poslední lekce a to je Autoplay. Kdy uděláme si testovací verzi hry, která se bude hrát sama a pomůže nám najít případné nedostatky naší hry.
0 Comments