public override void PlayerInit() { if (!m_animator) { m_animator = GetComponent <Animator>(); } Player.OnJump += OnJump; Player.OnGround += OnGround; if (Player.FunctionBases.ContainsKey("Attack")) { AttackBase attack = Player.FunctionBases["Attack"] as AttackBase; attack.AttackTime.OnStart += OnAttackStart; attack.AttackTime.OnTimeOut += OnAttackStop; float r = (attack.collider as CircleCollider2D).radius; MagneticFieldGUI.localScale = new Vector3(r, r, r); } if (Player.FunctionBases.ContainsKey("VertigoAction")) { VertigoAction vertigoAction = Player.FunctionBases["VertigoAction"] as VertigoAction; vertigoAction.VertigoAct += OnVertigo; } }
private void OnTriggerEnter2D(Collider2D collision) { if (!collider.IsTouching(collision)) { return; } if (IsEffectEnable && collision.gameObject.layer == 9 && !Player.IsDefence) { PlayerBase other = collision.gameObject.GetComponent <PlayerBase>(); float AttackPower = 0.0f; if (!other) { Vector2 origin2target = (collision.transform.position - transform.position).normalized; float angle = Vector2.Angle(LastVelocity, origin2target); AttackPower = LastVelocity.magnitude * Mathf.Cos(Mathf.Deg2Rad * angle); } else { if (other.FunctionBases.ContainsKey("VertigoAction")) { VertigoAction vertigoActionOther = other.FunctionBases["VertigoAction"] as VertigoAction; Vector2 otherVelocity = vertigoActionOther.LastVelocity; Vector2 myVelocity = LastVelocity; Vector2 origin2target = (collision.transform.position - transform.position).normalized; Vector2 attackVelocity = myVelocity - otherVelocity; float angle = Vector2.Angle(origin2target, attackVelocity); AttackPower = attackVelocity.magnitude * Mathf.Cos(Mathf.Deg2Rad * angle); } } if (AttackPower > MaxAttackPower) { Vertigo vertigo = new Vertigo(VertigoTime, AttackForceCoefficientAdd); Player.BuffManager.AddBuff(vertigo); vertigo.MaxTime.OnTimeOut += OnVertigoEnd; VertigoAct?.Invoke(true); } } }