// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.J) && NotAttacking) { TriggerAttackAnimations(); // RPG combat v 1 --> raycasting based. RaycastHit2D[] hits = Physics2D.BoxCastAll(RootObj.position, boxArea, 0, movement.LastDirection * Stat.GetFloat(atkDistanceTest)); // filter self. for (int i = 0; i < hits.Length; i++) { if (!hits[i].transform.IsChildOf(RootObj)) { attacking.Push(hits[i]); } } // -- Do damage to unique targets -- QuickLog.Msg(name, "basic attacks", attacking.Count); Transform lastRoot = null; while (attacking.Count > 0) { RaycastHit2D hit = attacking.Pop(); //if (!hit.transform.gameObject.CompareTag("Collision")) // continue; Collision c = hit.transform.GetComponent <Collision>(); if (c == null) { continue; } if (lastRoot == c.RootObj) { continue; } lastRoot = c.RootObj; // do damage and apply all effects. c.GetStats().DoDamage(dmgItemTest); Gems.GetExpOnAttack(); QuickLog.Msg(name, "- Damage", Stat.GetInt(dmgItemTest), "- >", hit.transform.name); } } }