REDSNAKE: Kdybych si mel tipnout, mas nejakej bordel v layerech. Over si, ze whatIsEnemies layer mask odpovida enemacum a ze jen a pouze enemaci maji nastaveny tenhle layer, ale nezapomnel jsi ho na jinem gameobjektu. Abys zjistil, presneji kde je problem, prepis si vnitrek toho for cyklu v updatu takhle:
var enemyCollider = enemiesToDamage[i];
var enemy = enemyCollider.GetComponent<Enemy>();
if (enemy == null)
{
Debug.LogError("Tenhle objekt nema spravne nastavenej enemy layer: " + enemyCollider.gameObject.name, enemyCollider.gameObject);
continue;
}
enemy.health -= damage;
/*shake cam a animace utoku*/
shake.CamShake();
Instantiate(bloodEffect, transform.position, Quaternion.identity);
Debug.Log("Cakance krve!!!!!!");
Beru to tak, ze se fakt ucis zaklady, ale mam tu pro tebe nejake tipy do budoucna:
Jednak teda neni moc dobry v updatu volat GetComponent<> funkce - jsou pomale. Je o dost lepsi mit enemace cachle v nejakem globalnim listu nebo podobne (ackoliv v tomhle workflow ti to moc nepomuze).
Takze druhy tip kolem workflow s kolizema - je lepsi nastavit kolizni layery primo v settings (Edit -> Project settings -> Physics). Tam si zadefinujes, ze maji spolu kolidovat treba strely a enemies, pak na gameobjekty strel a enemacu nahazis collidery a Rigidbody2D, budes posouvat vsema objektama jen pres Rigidbody2D (ApplyForce?), protoze to zajistuje spravne fungovani fyziky (a potazmo kolizi) a pak na monobehaviours budes pouzivat OnCollisionEnter2D metodu, ktera ti vystreli automaticky, kdyz dojde ke kolizi mezi nastavenyma koliznima vrstvama.
Byt tebou, probehnu si nejake tutorialy na Rigidbody(2D?) a collidery + spravny workflow s nima...