private void BindBoxes() { foreach (Transform child in transform) { AtkBox b = child.GetComponent <AtkBox>(); b.Init(this); AtkBoxes.Add(b); } }
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(); }
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); }