Exemplo n.º 1
0
    private void LoadPlayer(MapConfig mapData)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.ArcherBattle);

        player.transform.position    = mapData.playerBornPos;
        player.transform.eulerAngles = mapData.playerBornRote;
        player.transform.localScale  = Vector3.one;

        PlayerData  pd    = GameRoot.instance.Playerdata;
        BattleProps props = new BattleProps
        {
            hp          = pd.hp,
            attackValue = pd.attackValue,
            defend      = pd.defend,
            critical    = pd.critical,
        };

        /*载入角色以后,把状态管理器、角色控制器注入到逻辑实体里面,通过逻辑实体的状态管理管理状态,然后在状态管理器里面
         * 又通过逻辑实体里面持有的角色控制器来控制表现*/
        entitySelfPlayer = new EntityPlayer
        {
            battleMg = this,
            stateMg  = this.stateMg,
            skillMg  = skillMg,
        };
        entitySelfPlayer.SetBattleProps(props);
        entitySelfPlayer.Name = player.name;
        PlayerController playerController = player.GetComponent <PlayerController>();

        playerController.Init();
        entitySelfPlayer.SetController(playerController);
        playerAudioSource = entitySelfPlayer.GetAudio();
        if (GameRoot.instance.isNewBow)
        {
            playerController.GetComponent <ChangeSkinSys>().ChangeWeaponSkinToNew();
        }
        else
        {
            playerController.GetComponent <ChangeSkinSys>().ChangeWeaponSkinToOld();
        }
    }