Exemple #1
0
        private async void DropItem()
        {
            GameObject go = await AssetManager.InstantiateDropItem(itemId);

            DropItemController dropItemController = go.GetComponent <DropItemController>();

            SceneManager.Instance.DropItemEnterSceneWithWorldPosition(dropItemController, sceneController.name,
                                                                      Tang.Tools.RandomPositionInCube(transform.position, transform.lossyScale) + new Vector3(0, 1, 0));
        }
    private void Start()
    {
        claw               = GetComponent <AudioSource>();
        agent              = GetComponent <NavMeshAgent>();
        animator           = GetComponent <Animator>();
        dropItemController = GetComponent <DropItemController>();
        player             = FindObjectOfType <PlayerController>().transform;
        healthBar          = GetComponentInChildren <ZombieHealthBar>();

        healthBar.SetSliderValue(currentHealth, maxHealth);

        agent.speed = currentSpeed;
    }
    /// <summary>
    /// 初始化
    /// </summary>
    public void Initialize()
    {
        m_SocketClient = new SocketClient();

        m_SendWriter = new BinaryWriter(new MemoryStream(DEFAULT_SEND_BUFFER_SIZE));

        m_NetControllers = new BetterList <BaseNetController>();

        m_GatewayProtocolMapping    = new ProtocolMapping();
        m_GameServerProtocolMapping = new ProtocolMapping();

        m_SendToGameServerWriter = new BinaryWriter(new MemoryStream(DEFAULT_SEND_BUFFER_SIZE));
        m_PlayerToGSProto        = SingleInstanceCache.GetInstanceByType <KC2G_PlayerToGS>();

        m_Handshake        = false;
        m_MessageToken     = "";
        m_MessageTokenHash = 0;
        m_MessageIndex     = 0;

        ListenGateway(KG2C_Protocol.g2c_gs_to_player, OnReceivedGameServerMessage, typeof(KG2C_GSToPlayer));

        #region NetController
        m_LoginController         = new LoginController();
        m_CharacterListController = new CharacterListController();
        m_SceneController         = new SceneController();
        m_PlayerController        = new PlayerController();
        m_MailController          = new MailController();
        m_LogController           = new LogController();
        m_FriendController        = new FriendController();
        m_TeamController          = new TeamController();
        m_PackageController       = new PackageController();
        m_ShopController          = new ShopController();
        m_FoundryController       = new FoundryController();
        m_InstanceController      = new InstanceController();
        m_MissionController       = new MissionController();
        m_ChatContoller           = new Game.Frame.Net.ChatController();
        m_SkillController         = new SkillController();
        m_DropItemController      = new DropItemController();
        m_reliveController        = new ReliveController();
        m_MSAIBossController      = new MSAIBossController();
        #endregion
    }
Exemple #4
0
    //初始化
    public override bool Init(InitBaseData initData, Action callback = null)
    {
        base.Init(initData);

        Reset();

        var data = initData as InitDropItemData;

        if (data == null)
        {
            return(false);
        }
        mOwnerIsMe       = false;
        mCanAutoPickup   = true;
        HasAutoFightMove = false;
        var player = ObjManager.Instance.MyPlayer;

        if (player)
        {
            if (data.Owner.Contains(player.GetObjId()))
            {
                mOwnerIsMe = true;
                //mCanAutoPickup = true;
            }
            else if (data.Owner.Count <= 0)
            {
//新增,这种是谁都可以拾取的
                mOwnerIsMe = true;
            }
        }
        mOwnerPickUpProtectionTime = Game.Instance.ServerTime.AddSeconds(data.RemianSeconds);
        mLifeTime = DateTime.Now.AddSeconds(TotalLifeTime);

        //float height = GameLogic.Instance.Scene.GetTerrainHeight(data.TargetPos) + 0.1f;
        //mTargetPos = new Vector3(data.TargetPos.x, height, data.TargetPos.y);

        if (-1 == TerrainLayerMask)
        {
            TerrainLayerMask = LayerMask.GetMask(GAMELAYER.ShadowReceiver);
        }
        var        ray = new Ray(new Vector3(data.TargetPos.x, 50, data.TargetPos.y), Vector3.down);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit, 80, TerrainLayerMask))
        {
            mTargetPos    = hit.point;
            mTargetPos.y += 0.1f;
        }
        else
        {
            var height = GameLogic.GetTerrainHeight(data.TargetPos.x, data.TargetPos.y) + 0.1f;
            mTargetPos = new Vector3(data.TargetPos.x, height, data.TargetPos.y);
        }

        LoadResourceAction = () =>
        {
            if (State == ObjState.Deleted)
            {
                return;
            }

            State = ObjState.LoadingResource;
            LoadRes(() =>
            {
                State = ObjState.Normal;
                if (true != data.PlayDrop)
                {
                    //不需要播放掉落动画
                    Position = mTargetPos;
                    mState   = DropItemState.StayOnGround;

                    // 初始特效
                    if (mTableData != null && mTableData.Quality > 0 && !mEffect)
                    {
                        var resource = Table.GetClientConfig(600 + mTableData.Quality);

                        if (!string.IsNullOrEmpty(resource.Value))
                        {
                            CreateQualityEffect(resource.Value, o =>
                            {
                                if (DropItemState.StayOnGround != mState && DropItemState.Droping != mState)
                                {
                                    ComplexObjectPool.Release(o);
                                    mEffect = null;
                                }
                            });
                        }
                    }
                }
                else
                {
                    //需要播放掉落动画
                    StartCoroutine(Delay());
                    mState = DropItemState.Delay;
                }

                if (null != callback)
                {
                    callback();
                }

                mController = mModel.GetComponent <DropItemController>();
                if (null != mController)
                {
                    mController.ShowModel(true);
                    mController.ShowEffect(false);
                }
            });
        };

        EventDispatcher.Instance.AddEventListener(EquipBagNotFullChange.EVENT_TYPE, OnEquipRecycleSuccess);
        EventDispatcher.Instance.AddEventListener(UIEvent_PickSettingChanged.EVENT_TYPE, OnPickupSettingChanged);
        if (mOwnerIsMe)
        {
            ObjManager.Instance.MyPlayer.AutoCombat.AddDropPos(this);
        }
        return(true);
    }
 public void Init()
 {
     iDrop = GetItemMock();
     dIController = GetControllerMock(iDrop);
 }