void CheckCollidingWeapons(Collider col) { MeleeWeapon w = col.transform.root.gameObject.GetComponent <MeleeWeapon>(); if (w == null) { return; } if (w.IsThrown) { if (w.Thrower != control) { AttackCondition info = new AttackCondition(); info.CopyInfo(control.DAMAGE_DATA.AxeThrow, control); control.DAMAGE_DATA.damageTaken = new DamageTaken( w.Thrower, control.DAMAGE_DATA.AxeThrow, this, null, Vector3.zero); control.DAMAGE_DATA.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); } }
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) { AttackCondition info = new AttackCondition(); info.CopyInfo(c.DAMAGE_DATA.MarioStompAttack, control); int index = Random.Range(0, c.RAGDOLL_DATA.ArrBodyParts.Length); TriggerDetector randomPart = c.RAGDOLL_DATA.ArrBodyParts[index].GetComponent <TriggerDetector>(); c.DAMAGE_DATA.damageTaken = new DamageTaken( control, c.DAMAGE_DATA.MarioStompAttack, randomPart, control.RightFoot_Attack, Vector3.zero); c.DAMAGE_DATA.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); } } } } } } }