示例#1
0
    private void OnTriggerEnter(Collider collider)
    {
        Debug.Log("boost collider");
        if (collider.gameObject.tag == "Player")
        {
            Debug.Log("boost collider with player");
            if (collider.transform != m_parentTransform)
            {
                //basically switch to the playerBigHitState;
                Debug.Log("boost collider with player other than themselves");
                //Set hitlastby
                if (collider.transform.GetComponent <PlayerStats>().Invincible == false)
                {
                    collider.gameObject.GetComponent <PlayerStats>().m_HitLastBy = m_stats;

                    if (collider.transform.GetComponent <PlayerStats>().GetShieldState() == false)
                    {
                        Debug.Log("boost collider without shield");


                        // SFX
                        FindObjectOfType <AudioManager>().Play("Crit");

                        //get the colliders BigHitState
                        m_tempState = collider.transform.GetComponentInParent <PLayerBigHitState>();

                        //calculate the force acting on the hit player
                        //var Force = collider.transform.position - m_stats.transform.position;
                        var Force = m_offset;
                        m_state.Direction     = Force;
                        m_tempState.Direction = -Force;
                        Force.Normalize();

                        //Adds the force to the player we collided with
                        Force = (Force
                                 * m_stats.m_boost.MaxForce
                                 * m_stats.m_boost.boostCriticalHit);

                        collider.GetComponent <StateManager>().ChangeState(m_stats.PlayerBigHitState);
                        Physics.IgnoreCollision(m_stats.GetComponent <Collider>(), collider, true);
                        collider.GetComponent <PlayerStateManager>().SetCollider(m_stats.GetComponent <Collider>(), collider);

                        m_tempState.Force = Force;

                        m_state.GetComponent <StateManager>().ChangeState(m_stats.PlayerBigHitState);
                        m_state.isTarget = false;

                        m_BoxCollider.enabled = false;
                        m_MeshRender.enabled  = false;
                    }
                }
            }
            else
            {
                Debug.Log("Collision with ourselves");
                Debug.Log(collider.transform.GetInstanceID());
                Debug.Log(m_parentTransform.GetInstanceID());
            }
        }
    }
 void Awake()
 {
     m_roundStart        = true;
     m_renableCollisions = true;
     movementStates      = gameObject.AddComponent <StateManager>();
     driftState          = gameObject.AddComponent <PlayerDriftState>();
     jumpState           = gameObject.AddComponent <PlayerJumpState>();
     onPlanetState       = gameObject.AddComponent <PlayerOnPlanetState>();
     boostChargeState    = gameObject.AddComponent <PlayerBoostChargeState>();
     boostActiveState    = gameObject.AddComponent <PlayerBoostActiveState>();
     bigHitState         = gameObject.AddComponent <PLayerBigHitState>();
     respawnState        = gameObject.AddComponent <RespawnState>();
 }
示例#3
0
 public void PlayerLink(PlayerStats p_player)
 {
     m_stats           = p_player;
     m_state           = p_player.GetComponent <PLayerBigHitState>();
     m_parentTransform = p_player.GetComponent <Transform>();
 }