コード例 #1
0
    public void BeginBattle()
    {
        //召唤精灵
        GameObject playerPokemon = PokemonFactory.InitPokemon(PlayerCurPokemonData.race.raceid);

        playerPokemon.transform.position = PlayerPokemonTransform.position;
        playerPokemon.transform.parent   = PlayerPokemonTransform;
        PokemonFactory.PokemonBallEffect(playerPokemon.transform.position);
        GameObject enemyPokemon = PokemonFactory.InitPokemon(EnemyCurPokemonData.race.raceid);

        enemyPokemon.transform.position = EnemyPokemonTransform.position;
        enemyPokemon.transform.parent   = EnemyPokemonTransform;
        PokemonFactory.PokemonBallEffect(enemyPokemon.transform.position);
        PlayerCurPokemonData.transform = playerPokemon.transform;
        EnemyCurPokemonData.transform  = enemyPokemon.transform;

        //控制精灵和训练家朝向
        playerPokemon.transform.LookAt(enemyPokemon.transform);
        enemyPokemon.transform.LookAt(playerPokemon.transform);
        PlayerController.Instance.transform.LookAt(enemyPokemon.transform);
        Quaternion quaternion = PlayerController.Instance.transform.rotation;

        quaternion.x = 0;
        quaternion.z = 0;
        PlayerController.Instance.transform.rotation = quaternion;

        //初始化精灵数据
        foreach (BattlePokemonData pokemon in playPokemons)
        {
            pokemon.Recover();
        }
        foreach (BattlePokemonData pokemon in wildPokemons)
        {
            pokemon.Recover();
        }
        //考虑特性
        if (AbilityManager.AbilityImpacts.ContainsKey(PlayerCurPokemonData.ShowAbility))
        {
            AbilityManager.AbilityImpacts[PlayerCurPokemonData.ShowAbility]
            .OnBeCalled(PlayerCurPokemonData);
        }
        //考虑特性
        if (AbilityManager.AbilityImpacts.ContainsKey(EnemyCurPokemonData.ShowAbility))
        {
            AbilityManager.AbilityImpacts[EnemyCurPokemonData.ShowAbility]
            .OnBeCalled(EnemyCurPokemonData);
        }
        battleState = new BattleStateForPlayer();
        trainer     = context.playerData.scriptableObject;
    }
コード例 #2
0
    private void ExchangePokemon(BattlePokemonData newCallPokemon)
    {
        DebugHelper.LogFormat("我方玩家将精灵{0}替换成了{1}", PlayerCurPokemonData.Ename, newCallPokemon.Ename);

        //回收精灵GameObject
        PlayerCurPokemonData.transform.gameObject.SetActive(false);
        ObjectPoolController.PokemonObjectsPool[PlayerCurPokemonData.race.raceid] =
            PlayerCurPokemonData.transform.gameObject;

        //如果剧毒就重置计数
        if (AbnormalStateEnum.BadlyPoison == PlayerCurPokemonData.Abnormal)
        {
            BadlyPoisonState.count[PlayerCurPokemonData.ID] = 1;
        }

        //能力阶级重置
        PlayerCurPokemonData.StatModifiers = new StatModifiers();

        //考虑特性
        if (AbilityManager.AbilityImpacts.ContainsKey(PlayerCurPokemonData.ShowAbility))
        {
            AbilityManager.AbilityImpacts[PlayerCurPokemonData.ShowAbility]
            .OnLeave(PlayerCurPokemonData);
        }

        PlayerCurPokemonData = newCallPokemon;
        PlayChooseSkillID    = -1;

        //召唤新的精灵
        GameObject playerPokemon = PokemonFactory.InitPokemon(PlayerCurPokemonData.race.raceid);

        playerPokemon.transform.position = PlayerPokemonTransform.position;
        playerPokemon.transform.parent   = PlayerPokemonTransform;
        PokemonFactory.PokemonBallEffect(playerPokemon.transform.position);
        PlayerCurPokemonData.transform = playerPokemon.transform;

        //控制精灵和训练家朝向
        playerPokemon.transform.LookAt(EnemyCurPokemonData.transform);

        //考虑特性
        if (AbilityManager.AbilityImpacts.ContainsKey(PlayerCurPokemonData.ShowAbility))
        {
            AbilityManager.AbilityImpacts[PlayerCurPokemonData.ShowAbility]
            .OnBeCalled(PlayerCurPokemonData);
        }

        TTUIPage.ShowPage <UIBattle_PokemonInfos>();
    }