// --- /// <summary> /// Instantiate a copy of a HitBox2D prefab. /// </summary> public static HitBox2D Initialize( HitBox2D prefab, GameObject owner, Vector2 position, Vector2 size, bool isParented, List <string> interactionTypes) { HitBox2D instance = SpawnManager.Spawn(prefab.gameObject, position).GetComponent <HitBox2D>(); if (isParented) { instance.transform.parent = owner.transform; } instance.transform.position = position; instance.transform.localScale = size; instance.Owner = owner; instance.InteractionTypes = interactionTypes; return(instance); }
public async virtual Task TakeDamageAsync(int damage, HitBox2D hitBox) { OnBeforeTakeDamage(hitBox); if (hitBox != null) { hitBox.OnAfterLandedHit(gameObject); } Health -= damage; if (Health <= 0) { // await FreezeAsync(); IsInvincible = true; await DieAsync(); } else { OnAfterSurviveTakeDamage(hitBox); await FreezeAsync(); await InvincibilityAsync(); } }
/// <summary> /// Create a new GameObject and attach a HitBox2D component to it. /// </summary> public static HitBox2D Initialize( GameObject owner, int damage, Vector2 position, Vector2 size, bool isParented, List <string> interactionTypes = null, bool isSquare = true) { HitBox2D instance = SpawnManager.Spawn(position) .AddComponent <DrawBoxCollider2D>().gameObject .AddComponent <HitBox2D>(); if (isSquare) { instance.gameObject.AddComponent <BoxCollider2D>(); } else { instance.gameObject.AddComponent <CircleCollider2D>(); } instance.name = "HitBox"; instance.GetComponentWithError <Collider2D>().isTrigger = true; if (isParented) { instance.transform.parent = owner.transform; } instance.transform.position = position; instance.transform.localScale = size; instance.Owner = owner; instance.Damage = damage; instance.InteractionTypes = interactionTypes; return(instance); }
public DamageEventArgs(HitBox2D hitBox) { HitBox2D = hitBox; }