void CheckMarioStomp() { if (control.RIGID_BODY.velocity.y >= 0f) { MarioStompTargets.Clear(); DownBlockingObjs.Clear(); return; } if (MarioStompTargets.Count > 0) { control.RIGID_BODY.velocity = Vector3.zero; control.RIGID_BODY.AddForce(Vector3.up * 250f); foreach (CharacterControl c in MarioStompTargets) { AttackInfo info = new AttackInfo(); info.CopyInfo(c.damageDetector.MarioStompAttack, control); int index = Random.Range(0, c.RagdollParts.Count); c.damageDetector.DamagedTrigger = c.RagdollParts[index].GetComponent <TriggerDetector>(); c.damageDetector.Attack = c.damageDetector.MarioStompAttack; c.damageDetector.Attacker = control; c.damageDetector.AttackingPart = control.RightFoot_Attack; c.damageDetector.TakeDamage(info); } MarioStompTargets.Clear(); return; } CheckDownBlocking(); if (DownBlockingObjs.Count > 0) { foreach (KeyValuePair <GameObject, GameObject> data in DownBlockingObjs) { CharacterControl c = CharacterManager.Instance. GetCharacter(data.Value.transform.root.gameObject); if (c != null) { if (c.boxCollider.center.y + c.transform.position.y < control.transform.position.y) { if (c != control) { if (!MarioStompTargets.Contains(c)) { MarioStompTargets.Add(c); } } } } } } }
void CheckCollidingWeapons(Collider col) { MeleeWeapon w = col.transform.root.gameObject.GetComponent <MeleeWeapon>(); if (w == null) { return; } if (w.IsThrown) { if (w.Thrower != control) { AttackInfo info = new AttackInfo(); info.CopyInfo(control.damageDetector.AxeThrow, control); control.damageDetector.DamagedTrigger = this; control.damageDetector.Attack = control.damageDetector.AxeThrow; control.damageDetector.Attacker = w.Thrower; control.damageDetector.AttackingPart = w.Thrower.RightHand_Attack; control.damageDetector.TakeDamage(info); if (w.FlyForward) { w.transform.rotation = Quaternion.Euler(0f, 90f, 45f); } else { w.transform.rotation = Quaternion.Euler(0f, -90f, 45f); } w.transform.parent = this.transform; Vector3 offset = this.transform.position - w.AxeTip.transform.position; w.transform.position += offset; w.IsThrown = false; return; } } if (!control.animationProgress.CollidingWeapons.ContainsKey(this)) { control.animationProgress.CollidingWeapons.Add(this, new List <Collider>()); } if (!control.animationProgress.CollidingWeapons[this].Contains(col)) { control.animationProgress.CollidingWeapons[this].Add(col); } }