예제 #1
0
 private void Start()
 {
     // The fire axis is based on the player number.
     m_BarrierButton           = "Barrier" + m_PlayerNumber;
     playerController          = gameObject.GetComponent <TopmanPlayerController> ();
     resetStateTimer           = m_TimeInState;
     m_CooldownSlider.maxValue = m_BarrierCooldown;
 }
 private void Start()
 {
     // The fire axis is based on the player number.
     m_DiveButton     = "Dive" + m_PlayerNumber;
     playerController = gameObject.GetComponent <TopmanPlayerController> ();
     resetStateTimer  = m_TimeBeforeLanding;
     rb = gameObject.GetComponent <Rigidbody>();
     m_CooldownSlider.maxValue = m_DiveCooldown;
 }
    private void OnEnable()
    {
        m_CurrentHealth  = m_StartingHealth;
        m_Dead           = false;
        m_Rigidbody      = GetComponent <Rigidbody> ();
        playerController = gameObject.GetComponent <TopmanPlayerController>();
        SetHealthUI();
        m_Slider.maxValue = m_StartingHealth;

        //Lose Health every 2 seconds
        //InvokeRepeating("LoseHealth", 1.0f, 2f);
    }
 private void Start()
 {
     // The fire axis is based on the player number.
     m_RushButton       = "Rush" + m_PlayerNumber;
     h_MovementAxisName = "Horizontal" + m_PlayerNumber;
     v_MovementAxisName = "Vertical" + m_PlayerNumber;
     rb = GetComponent <Rigidbody>();
     playerController          = gameObject.GetComponent <TopmanPlayerController> ();
     ResetStateTimer           = m_TimeInState;
     m_ChargeSpeed             = (m_MaxLaunchForce - m_MinLaunchForce) / m_MaxChargeTime;
     m_AimSlider.value         = 0f; //m_MinLaunchForce
     m_CooldownSlider.maxValue = m_RushCooldown;
     m_CurrentLaunchForce      = m_MinLaunchForce;
 }
    private void OnTriggerEnter(Collider other)
    {
        // Find all targets in an area within hitbox and damage them.
        Collider[] colliders = Physics.OverlapSphere(transform.position, transform.localScale.x / 2, m_TankMask);

        switch (currentType)
        {
        case HitboxType.STUN:
            break;

        case HitboxType.BARRIER:
            for (int i = 0; i < colliders.Length; i++)
            {
                Rigidbody targetRigidbody = colliders[i].GetComponent <Rigidbody>();

                if (!targetRigidbody || targetRigidbody == m_OwnerRigidbody)
                {
                    continue;
                }

                TopmanPlayerController targetPlayerController = colliders[i].GetComponent <TopmanPlayerController>();

                if (!targetPlayerController)
                {
                    continue;
                }

                if (targetPlayerController.currentState == TopmanPlayerController.StateMachine.DIVE)
                {
                    continue;
                }

                targetRigidbody.velocity = new Vector3(0f, 0f, 0f);

                targetRigidbody.AddExplosionForce(m_ExplosionForce, transform.position, m_ExplosionRadius);

                TopmanStats targetHealth = targetRigidbody.GetComponent <TopmanStats>();

                if (!targetHealth)
                {
                    continue;
                }

                float damage = m_MaxDamage;

                targetHealth.TakeDamage(damage, m_HitStun);
            }
            break;

        case HitboxType.DIVE:
            for (int i = 0; i < colliders.Length; i++)
            {
                Rigidbody targetRigidbody = colliders[i].GetComponent <Rigidbody>();

                if (!targetRigidbody || targetRigidbody == m_OwnerRigidbody)
                {
                    continue;
                }

                TopmanPlayerController targetPlayerController = colliders[i].GetComponent <TopmanPlayerController>();

                if (!targetPlayerController)
                {
                    continue;
                }

                if (targetPlayerController.currentState == TopmanPlayerController.StateMachine.RUSH)
                {
                    continue;
                }

                targetRigidbody.velocity = new Vector3(0f, 0f, 0f);

                targetRigidbody.AddExplosionForce(m_ExplosionForce, transform.position, m_ExplosionRadius);

                TopmanStats targetHealth = targetRigidbody.GetComponent <TopmanStats>();

                if (!targetHealth)
                {
                    continue;
                }

                float damage = CalculateDamage(targetRigidbody.position);

                targetHealth.TakeDamage(damage, m_HitStun);
            }
            gameObject.GetComponent <SphereCollider>().enabled = false;
            Destroy(gameObject);
            break;
        }
    }