public static Pokemon BuildPokemon(EncounterPokemon encounter) { int PokemonID = PokemonFactory.GetPokemonFromEncounterPokemonScriptableObject(encounter); Pokemon pokemon = PokemonFactory.BuildPokemon(PokemonID); //考虑特性 Pokemon FirstPokemon = Contexts.sharedInstance.game.playerData.scriptableObject.pokemons[0]; BattlePokemonData pokemonData = BattlePokemonData.Context[FirstPokemon.GetInstanceID()]; if (AbilityManager.AbilityImpacts.ContainsKey(pokemonData.ShowAbility)) { AbilityManager.AbilityImpacts[pokemonData.ShowAbility] .OnEncounterPokemon(pokemonData, pokemon); } return(pokemon); }
public void Execute() { if (context.isBattleFlag) { return; } if (null == grassPosList || 1 > grassPosList.Length) { grassPosList = context.GetEntities(GameMatcher.GrassPos) .Select(x => x.grassPos.pos) .ToArray(); } int DetectGrassNum = 0; Vector3 playPos = new Vector3(player.position.x, 0, player.position.z); int count = grassPosList.Length; for (int i = 0; i < count; ++i) { if (Math.Abs(grassPosList[i].x - playPos.x) <= 1) { if (Math.Abs(grassPosList[i].z - playPos.z) <= 1) { DetectGrassNum++; } } } //遭遇精灵 if (0 < DetectGrassNum && Vector3.Magnitude(PlayerRigidbody.velocity) > 0.3f) { float p = EncounterPokemonProbability * DetectGrassNum; if (RandomService.game.Float(0, 100) < p) { //int PokemonID = PokemonFactory.GetPokemonFromEncounterPokemonScriptableObject(GrassPokemons); Pokemon pokemom = PokemonFactory.BuildPokemon(GrassPokemons); BattleController.Instance.InitWildPokemon(pokemom); DebugHelper.LogFormat("你在草地遭遇了精灵{0}", pokemom.ename); context.isBattleFlag = true; } } }
public void Initialize() { string json = null; if (File.Exists(ResourceController.Instance.TrainerDataPath.ToString())) { json = File.ReadAllText(ResourceController.Instance.TrainerDataPath.ToString()); } Trainer trainer = ScriptableObject.CreateInstance <Trainer>(); if (json != null) { trainer = JsonConvert.DeserializeObject <Trainer>(json); } if (null == trainer || null == trainer.pokemons || 0 == trainer.pokemons.Count) { //如果没有精灵,就给一只皮卡丘和小火龙 Pokemon Pikaqiu = PokemonFactory.BuildPokemon(25); Pokemon Charmander = PokemonFactory.BuildPokemon(4); trainer.pokemons = new List <Pokemon>(6) { Pikaqiu, Charmander }; } else { foreach (Pokemon pokemon in trainer.pokemons) { new BattlePokemonData(pokemon); } } if (null == trainer || null == trainer.bagItems || 0 == trainer.bagItems.Count) { //如果道具背包没有物品,给5个精灵球 trainer.bagItems = new List <BagItems>(24) { BagItems.Build("精灵球", 5) }; } context.ReplacePlayerData(trainer); }
public void Execute() { if (context.isBattleFlag) { return; } if (null == grassPosList || 1 > grassPosList.Length) { grassPosList = context.GetEntities(GameMatcher.GrassPos) .Select(x => x.grassPos.pos) .ToArray(); Debug.Log(grassPosList); } int DetectGrassNum = 0; Vector3 playPos = new Vector3(player.position.x, 0, player.position.z); int count = grassPosList.Length; for (int i = 0; i < count; ++i) { if (Math.Abs(grassPosList[i].x - playPos.x) <= 1) { if (Math.Abs(grassPosList[i].z - playPos.z) <= 1) { DetectGrassNum++; } } } //Vector3 playPos = player.position; ////获取距离玩家附近的草 //var CheckGrassList = GrassPosList.Where(x => Vector3.Distance(playPos, x) < 2f).ToList(); //if (0 == CheckGrassList.Count()) return; //GeometryDetection.Sphere play_detection = new GeometryDetection.Sphere(playPos, 1.2f); ////是否碰撞 //int DetectGrassNum = 0; //foreach (Vector3 GrassPos in CheckGrassList) //{ // //几何检测 // GeometryDetection.AABB grass_detection = // new GeometryDetection.AABB(GrassPos, // new Vector3( // GrassPos.x + 1f, // GrassPos.y + 5f, // GrassPos.z + 1f)); // bool isDetected = GeometryDetection.Overlap_AABB_Sphere(grass_detection, play_detection); // if (false == isDetected) // continue; // DetectGrassNum++; //} //遭遇精灵 if (0 < DetectGrassNum && Vector3.Magnitude(PlayerRigidbody.velocity) > 0.3f) { float p = EncounterPokemonProbability * DetectGrassNum; if (RandomService.game.Float(0, 100) < p) { //int PokemonID = PokemonFactory.GetPokemonFromEncounterPokemonScriptableObject(GrassPokemons); Pokemon pokemom = PokemonFactory.BuildPokemon(GrassPokemons); BattleController.Instance.InitWildPokemon(pokemom); DebugHelper.LogFormat("你在草地遭遇了精灵{0}", pokemom.ename); context.isBattleFlag = true; } } }