Пример #1
0
    private void Update()
    {
        //Debug.Log(m_state);
        if (m_state == GRENADE_STATE.DEAD)
        {
            m_explosion.gameObject.SetActive(true);

            m_networkloader.RpcLoadPrefab_INDEPENDENT(PREFAB_ID.GREANDE_EXPLOSION, m_team);
            m_explosion.transform.parent = null;
            m_explosion.gameObject.SetActive(true);
            m_state = GRENADE_STATE.INACTIVE;
            return;
        }
        if (m_state == GRENADE_STATE.BURNING)
        {
            m_fuseTimeRemaining -= Time.deltaTime;
            if (m_fuseTimeRemaining <= 0)
            {
                m_state = GRENADE_STATE.DEAD;
            }
            return;
        }
        if (m_state == GRENADE_STATE.INACTIVE)
        {
            NetworkServer.Destroy(m_entity.gameObject);
        }
    }
Пример #2
0
    void onCollision(Rigidbody body, EntityPlayer entity, Vector3 impactPoint)
    {
        if (m_state != GRENADE_STATE.TRAVELLING && m_state != GRENADE_STATE.BURNING)
        {
            return;
        }
        if (entity != null && (entity.m_team == GameData.TEAM.RED || entity.m_team == GameData.TEAM.BLUE))
        {
            onDirectHit(entity);
            m_state = GRENADE_STATE.DEAD;
            return;
        }
        if (body.gameObject.layer == PhysicsLayer.GET_LAYER(PHYSICS_LAYER.LAYER_RED_SHIELD) ||
            body.gameObject.layer == PhysicsLayer.GET_LAYER(PHYSICS_LAYER.LAYER_BLUE_SHIELD)
            )
        {
            m_state = GRENADE_STATE.DEAD;

            return;
        }
        if (m_state == GRENADE_STATE.TRAVELLING)
        {
            m_state = GRENADE_STATE.BURNING;
        }


        m_triggerEnter.enabled = false;
    }