コード例 #1
0
    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;
        }
    }
コード例 #2
0
    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);
            }
        }
    }