Exemple #1
0
 private void BindBoxes()
 {
     foreach (Transform child in transform)
     {
         AtkBox b = child.GetComponent <AtkBox>();
         b.Init(this);
         AtkBoxes.Add(b);
     }
 }
Exemple #2
0
    public void OnBoxHit(AtkBox box, Collider2D other)
    {
        int idx = AtkBoxes.IndexOf(box);

        HitBox oppo  = other.GetComponent <HitBox>();
        int    skill = SKillMap[idx];

        ApplyAtk();
        Vector2 pos = GetHitEffectPosition(box, oppo);

        oppo.owner.GetHit();
        GameObject.Instantiate(Resources.Load <GameObject>("Effect01"), pos, Quaternion.identity, null);
        //GameObject.Instantiate();
    }
Exemple #3
0
    public Vector2 GetHitEffectPosition(AtkBox self, HitBox oppo)
    {
        Vector2 hit = new Vector2(1, 1);

        float self_pos_x = self.transform.position.x + self.atkCollider.offset.x;
        float self_pos_y = self.transform.position.y + self.atkCollider.offset.y;

        float oppo_pos_x = oppo.transform.position.x + oppo.hitCollider.offset.x;
        float oppo_pos_y = oppo.transform.position.y + oppo.hitCollider.offset.y;

        if (self_pos_y + self.atkCollider.size.y / 2 >= oppo_pos_y + oppo.hitCollider.size.y / 2)
        {
            if (self_pos_y - self.atkCollider.size.y / 2 <= oppo_pos_y - oppo.hitCollider.size.y / 2)
            {
                hit = oppo.transform.position;
            }
            else
            {
                hit = new Vector2(oppo.transform.position.x, (self_pos_y - self.atkCollider.size.y / 2) + ((oppo_pos_y + oppo.hitCollider.size.y / 2) - (self_pos_y - self.atkCollider.size.y / 2)) / 2);
            }
        }
        else if (self_pos_y + self.atkCollider.size.y / 2 < oppo_pos_y + oppo.hitCollider.size.y / 2)
        {
            if (self_pos_y - self.atkCollider.size.y / 2 >= oppo_pos_y - oppo.hitCollider.size.y / 2)
            {
                hit = new Vector2(oppo.transform.position.x, self_pos_y);
            }
            else if (self_pos_y - self.atkCollider.size.y / 2 < oppo_pos_y - oppo.hitCollider.size.y / 2)
            {
                hit = new Vector2(oppo.transform.position.x, (self_pos_y + self.atkCollider.size.y / 2) - ((self_pos_y + self.atkCollider.size.y / 2) - (oppo_pos_y - oppo.hitCollider.size.y / 2)) / 2);
            }
        }

        hit += Random.insideUnitCircle * 0.1f;

        return(hit);
    }