Exemple #1
0
        // ---

        /// <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);
        }
Exemple #2
0
        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();
            }
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
 public DamageEventArgs(HitBox2D hitBox)
 {
     HitBox2D = hitBox;
 }