public void Update(float delta) { m_FishNum = 0; List <Fish> fishList = new List <Fish>(m_FishList.Values); for (int i = 0; i < fishList.Count; ++i) { Fish fish = fishList[i]; if (!fish.Update(delta)) { DestroyFish(fish, fish.Catched); } else { ++m_FishNum; } } time1 += Time.deltaTime; if (time1 >= time2 && m_FishNum > 0 && boo == 0) { GlobalAudioMgr.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_qingdian); // time1 = 0f; boo = 1; } if (time1 >= time3 && m_FishNum > 0) { GlobalAudioMgr.Instance.PlayOrdianryMusic(Audio.OrdianryMusic.m_haohuai); boo = 0; time1 = 0f; } UpdateBackupList(delta); //CheckFishPos(); }
// Use this for initialization void Start() { for (int i = 0; i < numberInSwarm; i++) { // Debug.Log("i = " + i); newFish = new Fish(i); if (newFish == null) { Debug.Log("newfish null"); } newFish.myGameObject.transform.position = Random.insideUnitSphere * 20; fishSwarm.Add(newFish); newFish.Update(); } }
/// <summary> /// Allows the game to run logic such as updating the world, /// checking for collisions, gathering input, and playing audio. /// </summary> /// <param name="gameTime">Provides a snapshot of timing values.</param> protected override void Update(GameTime gameTime) { // Allows the game to exit if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed) { this.Exit(); } foreach (Fish x in school) { x.Update(gameTime, graphics); } controls(); // TODO: Add your update logic here f.Update(gameTime); base.Update(gameTime); }
/// <summary> /// 循环检测玩家状态. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void OnWork(object sender, DoWorkEventArgs e) { var status = Scanner.ReadInt16(Data.StatusPtr); while (true) { if (Worker.CancellationPending) { e.Cancel = true; } try { var nStatus = Scanner.ReadInt16(Data.StatusPtr); if (nStatus != status) { StatusChange(nStatus); status = nStatus; } var buffTablePtr = Scanner.ReadIntPtr(Data.ActorTable) + Data.UiStatusEffects; BuffCheck(buffTablePtr); WeatherCheck(Data.WeatherPtr); if (Fish.State == FishingState.Casting) { Fish.Update(); } if (Status.IsActive) { Status.Update(); } } catch (Exception) { // ignored } Thread.Sleep(50); } }
public void Update(float delta) { m_FishNum = 0; List <Fish> fishList = new List <Fish>(m_FishList.Values); for (int i = 0; i < fishList.Count; ++i) { Fish fish = fishList[i]; if (!fish.Update(delta)) { DestroyFish(fish, fish.Catched); } else { ++m_FishNum; } } UpdateBackupList(delta); //CheckFishPos(); }
// Update is called once per frame void Update() { toBeRemoved.Clear(); if (fishSwarm == null || numberInSwarm < 1) { Start(); Debug.Log("swarm is null"); return; } for (int i = 0; i < numberInSwarm; i++) { Fish f = (Fish)fishSwarm[i]; f.Update(); if (f.myGameObject.transform.position.magnitude > 100) { f.myGameObject.transform.position = Vector3.zero; } } }
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); } } } } } }