Exemplo n.º 1
0
        public void Update(float delta)
        {
            _mFishNum = 0;
            List <Fish> fishList = new List <Fish>(_mFishList.Values);

            for (int i = 0; i < fishList.Count; ++i)
            {
                Fish fish = fishList[i];
                if (!fish.Update(delta))
                {
                    DestroyFish(fish, fish.Catched);
                }
                else
                {
                    ++_mFishNum;
                }
            }
            _time1 += Time.deltaTime;
            if (_time1 >= time2 && _mFishNum > 0 && _boo == 0)
            {
                AudioManager.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_qingdian);
                // time1 = 0f;
                _boo = 1;
            }
            if (_time1 >= time3 && _mFishNum > 0)
            {
                AudioManager.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_haohuai);
                _boo   = 0;
                _time1 = 0f;
            }
            UpdateBackupList(delta);
            //CheckFishPos();
        }
Exemplo n.º 2
0
        public void LaunchFishByAsycScene(NetCmdPack pack)
        {
            NetCmdSyncFish cmdFish     = (NetCmdSyncFish)pack.cmd;
            GroupDataList  gdl         = FishResManager.Instance.GetFishGroup(cmdFish.GroupID);
            float          elapsedTime = Utility.TickSpan(pack.tick) + SceneRuntime.NetDelayTime;

            if (gdl.PathGroupData != null)
            {
                FishPathGroupData        pathgroup  = gdl.PathGroupData;
                PathLinearInterpolator[] interpList = PathManager.Instance.GetPathGroup(pathgroup.PathGroupIndex, SceneRuntime.Inversion);
                if (cmdFish.PathIdx >= interpList.Length)
                {
                    LogMgr.Log("路径数量和服务器不一致,路径群:" + cmdFish.PathGroup + ", 索引:" + cmdFish.PathIdx);
                }
                {
                    Fish fish = new Fish();
                    fish.Init(cmdFish.FishID, pathgroup.FishIndex, pathgroup.FishScaling, cmdFish.FishTime, pathgroup.ActionSpeed, pathgroup.ActionUnite, pathgroup.Speed, interpList[cmdFish.PathIdx]);
#if UNITY_EDITOR
                    fish.SetModelName("Fish_PathGroup_" + cmdFish.GroupID);
#endif
                    if (fish.Update(elapsedTime))
                    {
                        SetFish(fish);
                        fish.Controller.CheckCurrentEvent(cmdFish.IsActiveEvent);
                        fish.Controller.PathEvent.m_CurElapsedTime = cmdFish.ElapsedTime * 0.001f;
                        if (cmdFish.Package != 255)
                        {
                            fish.SetPackage(cmdFish.Package);
                        }
                        if (cmdFish.DelayType != (byte)FISH_DELAY_TYPE.DELAY_NONE)
                        {
                            float   scl;
                            float[] dur = new float[3];
                            Utility.ReductionToFloat(cmdFish.DelayScaling, cmdFish.DelayDuration1, cmdFish.DelayDuration2, cmdFish.DelayDuration3,
                                                     out scl, dur);
                            float time = cmdFish.DelayCurrentTime * 0.001f;
                            fish.Controller.TimeController.AddSkillTimeScaling(scl, dur, (FISH_DELAY_TYPE)cmdFish.DelayType, time);
                        }
                    }
                }
            }
            else
            {
                float fInv      = SceneRuntime.Inversion ? -1.0f : 1.0f;
                int   pathIndex = cmdFish.PathGroup;
                int   gdIdx     = cmdFish.PathIdx >> 8;
                int   fishIdx   = cmdFish.PathIdx & 0xff;

                PathLinearInterpolator pi = PathManager.Instance.GetPath(pathIndex, SceneRuntime.Inversion);
                if (gdIdx >= gdl.GroupDataArray.Length)
                {
                    LogMgr.Log("场景鱼同步,索引超出界限1:" + gdIdx);
                    return;
                }
                GroupData gd = gdl.GroupDataArray[gdIdx];
                {
                    {
                        Fish fish = new Fish();
                        fish.Init(cmdFish.FishID, gd.FishIndex, gd.FishScaling, cmdFish.FishTime, gd.ActionSpeed, gd.ActionUnite, gd.SpeedScaling, pi);
#if UNITY_EDITOR
                        fish.SetModelName("Fish_FishGroup_" + cmdFish.GroupID + "_Path_" + pathIndex);
#endif
                        if (fish.Update(elapsedTime))
                        {
                            if (fishIdx >= gd.PosList.Length)
                            {
                                LogMgr.Log("场景鱼同步,索引超出界限2:" + gdIdx);
                                return;
                            }
                            fish.SetOffset(new Vector3(0, fInv * gd.PosList[fishIdx].y, gd.PosList[fishIdx].z));
                            SetFish(fish);
                            if (cmdFish.Package != 255)
                            {
                                fish.SetPackage(cmdFish.Package);
                            }
                            fish.Controller.CheckCurrentEvent(cmdFish.IsActiveEvent);
                            fish.Controller.PathEvent.m_CurElapsedTime = cmdFish.ElapsedTime * 0.001f;
                            if (cmdFish.DelayType != (byte)FISH_DELAY_TYPE.DELAY_NONE)
                            {
                                float   scl;
                                float[] dur = new float[3];
                                Utility.ReductionToFloat(cmdFish.DelayScaling, cmdFish.DelayDuration1, cmdFish.DelayDuration2, cmdFish.DelayDuration3,
                                                         out scl, dur);
                                float time = cmdFish.DelayCurrentTime * 0.001f;
                                fish.Controller.TimeController.AddSkillTimeScaling(scl, dur, (FISH_DELAY_TYPE)cmdFish.DelayType, time);
                            }
                        }
                    }
                }
            }
        }