24# 1942 Classic 11.

Dnes, začnou naši nepřátelé střílet. Nebudou střílet stále jako hráč, ale budou střílet náhodně každých 1-2s. Napřed si vytvoříme v Enemy.cs pár proměnných. Jedna bude odpočet výstřelu, minimální čas mezi střelami a poslední bude maximální čas mezi střelami. Všechny proměnné si uděláme jako float.

Jako první si ve Start() vytvoříme náhodné číslo mezi min a max. Na to použijeme funkce Random.Range a uložíme výsledek do shotCouter.

Pokud máte podtržené Random.Range, musíte odebrat “using System;” na začátku souboru.

Nyní máme připraveno, za jak dlouho má nepřítel vystřelit poprvé. Ještě musíme udělat odpočet, výstřel a znovu vypočítat za jak dlouho vystřelí další střela. Odpočet a výstřel budeme volat z update, když už budeme mí vypočítáno za jak dlouho máme vystřelit.

Pro odpočet použijeme podobný systém, jako jsme použily pro vytvoření nezávislosti na FPS. Time.deltaTime je jak dlouho trvalo vytvořit poslední snímek a to můžeme odečíst od odpočtu. Pokud se dostaneme pod 0 vystřelíme a začneme nový odpočet.

Výstřel si dáme do samostatné funkce a restart odpočtu je jen jeden řádek, který už máme napsaný a stačí ho zkopírovat.

Výstřel si půjčíme od Player.cs, kde výstřel máme již připravený ve funkci TurboFire().

Máme dvě podtržená slova, projectile a projectileSpeed. Obě máme v Player definované na začátku v proměnných a můžeme to opět kopírovat.

Skoro hotovo, protože teď by nepřátelé stříleli stejně jako hráč (směrem nahoru). To by nebyla pro hráče žádná hrozba a tak otočíme střelbu směrem dolů. Již máme projectileSpeed, pokud ji uděláme zápornou, otočíme tím i směr letu projektilu. Stačí přidat mínus před projetileSpeed při vytváření vektoru2 pro Rigidbody.

Nyní nastavení v Unity. Najdeme si nový Laser v KenneySpace -> PNG -> Lasers. Přetáhneme si ho do Sprites, aby jsme ho snadno našli, přetáhneme si ho do scény. Můžeme ho přejmenovat na něco lepšího než laser*něco**číslo*, v mém případě jsem ho pojmenoval na EnemyLaser. Ten si pak přetáhneme do Assets -> Prefabs, Odstraníme ho ze scény a v inspektoru mu přidáme componenty. Potřebuje DMG script, aby mohl v budoucnu dávat damage a potřebuje RigidBody2D. Bez RigidBody nelze na něj působit silou a ve scriptu chceme rigidbody upravovat. Pokud by jsme ho u projektilu neměli rozhodně to fungovat nebude. Další nastavení RigidBody bude změna typu na Kinematic. Zatím nebudeme projektilům nepřátel dávat Collider, protože pokud by jsme ho přidali budou se náboje odrážet od nepřátel a pokud by jsme zapnutli trigger, dokonce by se nepřátelé zabíjeli navzájem. Co ale musíme ještě upravit je nastavit u nepřátel rychlost třel. Assets -> Prefabs -> Enemy -> Inspektor -> Enemy (Script) -> Projectile Speed.

Když už střílíme a ničíme nepřátele, je na čase aby i nepřátelé mohli zničit nás.

 

0 Comments

Submit a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Share This