コード例 #1
0
ファイル: BattleMgr.cs プロジェクト: wangzeping1998/-
    //加载玩家
    private void LoadPlayer(MapCfg mapData)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.AssassinBattlePlayerPrefab);

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

        PlayerController playerCtrl = player.GetComponent <PlayerController>();

        playerCtrl.Init();

        PlayerData  pd    = GameRoot.instance.playerData;
        BattleProps props = new BattleProps()
        {
            hp       = pd.hp,
            ad       = pd.ad,
            ap       = pd.ap,
            addef    = pd.addef,
            apdef    = pd.apdef,
            dodge    = pd.dodge,
            pierce   = pd.pierce,
            critical = pd.critical,
        };

        //生成角色赋予 状态管理器
        entityPlayer = new EntityPlayer();
        entityPlayer.SetBattleProps(props);
        entityPlayer.SetBattleMgr(this);         //添加战斗管理器
        entityPlayer.SetStateMgr(this.stateMgr); //添加状态管理器
        entityPlayer.SetSkillMgr(this.skillMgr); //添加技能管理器
        entityPlayer.SetController(playerCtrl);  //添加角色控制器
        entityPlayer.Idle();
    }
コード例 #2
0
    private void LoadPlayer(MapCfg mapCfg)
    {
        GameObject objPlayer = resSvc.LoadPrefab(PathDefine.cPlayerBattlePrefab);

        objPlayer.transform.localPosition    = mapCfg.playerBornPos;
        objPlayer.transform.localEulerAngles = mapCfg.playerBornRote;
        objPlayer.transform.localScale       = Vector3.one;

        PlayerData  playerData  = GameRoot.Instance.PlayerData;
        BattleProps battleProps = new BattleProps
        {
            hp       = playerData.hp,
            ad       = playerData.ad,
            ap       = playerData.ap,
            addef    = playerData.addef,
            apdef    = playerData.apdef,
            dodge    = playerData.dodge,
            pierce   = playerData.pierce,
            critical = playerData.critical
        };

        entityPlayer = new EntityPlayer
        {
            _stateMgr  = battleStateMgr,
            _skillMgr  = skillMgr,
            _battleMgr = this
        };
        entityPlayer.SetBattleProps(battleProps);
        entityPlayer.EntityName = "Player";

        PlayerController playerContrl = objPlayer.GetComponent <PlayerController>();

        playerContrl.Init();
        entityPlayer.SetController(playerContrl);
    }
コード例 #3
0
    private void LoadPlayer(MapCfg mapData)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.AssissnBattlePlayerPrefab);

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

        PlayerData  pd    = GameRoot.Instance.PlayerData;
        BattleProps props = new BattleProps {
            hp       = pd.hp,
            ad       = pd.ad,
            ap       = pd.ap,
            addef    = pd.addef,
            apdef    = pd.apdef,
            dodge    = pd.dodge,
            pierce   = pd.pierce,
            critical = pd.critical
        };

        entitySelfPlayer = new EntityPlayer {
            battleMgr = this,
            stateMgr  = stateMgr,
            skillMgr  = skillMgr
        };
        entitySelfPlayer.Name = "AssassinBattle";
        entitySelfPlayer.SetBattleProps(props);

        PlayerController playerCtrl = player.GetComponent <PlayerController>();

        playerCtrl.Init();
        entitySelfPlayer.SetCtrl(playerCtrl);
    }
コード例 #4
0
ファイル: BattleMgr.cs プロジェクト: hoppyNaut/DarkGod
    private void LoadPlayer(MapCfg mapCfg)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.AssassinBattlePrefab, false);

        player.transform.position         = mapCfg.playerBornPos;
        player.transform.localEulerAngles = mapCfg.playerBornRote;
        player.transform.localScale       = Vector3.one;

        playerController = player.GetComponent <PlayerController>();
        playerController.Init();

        PlayerData  playerData  = GameRoot.Instance.PlayerData;
        BattleProps battleProps = new BattleProps
        {
            hp       = playerData.hp,
            ad       = playerData.ad,
            ap       = playerData.ap,
            addef    = playerData.addef,
            apdef    = playerData.apdef,
            dodge    = playerData.dodge,
            pierce   = playerData.pierce,
            critical = playerData.critical,
        };

        entityPlayer = new EntityPlayer
        {
            currentAniState = AniState.Idle,
            stateMgr        = this.stateMgr,
            skillMgr        = this.skillMgr,
            battleMgr       = this,
            Name            = "AssassinBattle",
        };
        entityPlayer.SetController(playerController);
        entityPlayer.SetBattleProps(battleProps);
    }
コード例 #5
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();
        }
    }
コード例 #6
0
    public void LoadPlayer(MapCfgs mapData)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.ASsissnBattlePlayerPrefab);

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

        //实例化一个逻辑实体
        entityPlayer = new EntityPlayer();
        //注入状态管理器
        entityPlayer.stateMgr = stateMgr;

        //初始化角色控制器
        PlayerController playerCtrl = player.GetComponent <PlayerController>();

        playerCtrl.Init();
        entityPlayer.controller = playerCtrl;
    }
コード例 #7
0
    private void LoadPlayer(MapCfg mapData)
    {
        GameObject player = resSvc.LoadPrefab(PathDefine.AssissnBattlePlayerPrefab);

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

        entitySelfPlayer = new EntityPlayer {
            battleMgr = this,
            stateMgr  = stateMgr,
            skillMgr  = skillMgr
        };

        PlayerController playerCtrl = player.GetComponent <PlayerController>();

        playerCtrl.Init();
        entitySelfPlayer.controller = playerCtrl;
    }
コード例 #8
0
    /// <summary>
    /// 可以优化代码结构。
    /// </summary>
    /// <param name="battlePropDic"></param>
    public void Init(Dictionary <int, BattleProp> battlePropDic)
    {
        resSvc   = ResSvc.Instance;
        timerSvc = TimerSvc.Instance;

        //初始化各管理器
        stateMgr = gameObject.AddComponent <StateMgr>();
        stateMgr.Init();

        bulletParent    = GameObject.Find("Temp/Bullets").transform;
        effectParent    = GameObject.Find("Temp/Effects").transform;
        bulletPool      = gameObject.AddComponent <ObjectPool>();
        laserBulletPool = gameObject.AddComponent <ObjectPool>();
        hitEffectPool   = gameObject.AddComponent <ObjectPool>();
        fireEffectPool  = gameObject.AddComponent <ObjectPool>();
        shellEffectPool = gameObject.AddComponent <ObjectPool>();

        //找到自己的战场参数
        foreach (var item in battlePropDic)
        {
            RoleType       roleType       = (RoleType)item.Key;
            ControllerBase controllerBase = null;
            GameObject     playerGO       = null;
            if (roleType == BattleSys.Instance.GetCurrentRoleType())
            {
                playerGO = resSvc.LoadPrefab(PathDefine.PlayerPath);
                #region 设置摄像机以及添加玩家控制器
                switch (roleType)
                {
                case RoleType.Red:
                    Camera.main.transform.position         = new Vector3(0, 1f, -30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0);
                    break;

                case RoleType.Blue:
                    Camera.main.transform.position         = new Vector3(0, 1f, 30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0);
                    break;

                case RoleType.Yellow:
                    Camera.main.transform.position         = new Vector3(-30, 1, 30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0);
                    break;

                case RoleType.Green:
                    Camera.main.transform.position         = new Vector3(30, 1, 30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0);
                    break;

                case RoleType.Purple:
                    Camera.main.transform.position         = new Vector3(-30, 1, -30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0);
                    break;

                case RoleType.Black:
                    Camera.main.transform.position         = new Vector3(30, 1, -30f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0);
                    break;

                case RoleType.Orange:
                    Camera.main.transform.position         = new Vector3(22, 1, -5f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0);
                    break;

                case RoleType.White:
                    Camera.main.transform.position         = new Vector3(-25, 1, -5f);
                    Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0);
                    break;
                }
                playerController = playerGO.AddComponent <PlayerController>();
                #endregion
                playerController.SetRoleType(roleType);
                controllerDic.Add(roleType, playerController);


                #region 设置实体数据
                playerEntity = new PlayerEntity(this, stateMgr);

                playerEntity.SetCtrl(playerController);
                playerEntity.SetBattleProps(battlePropDic.TryGet(item.Key));
                //考虑了扩展游戏到AI
                playerEntity.SetRoleType(roleType);
                playerEntity.Born();
                #endregion

                controllerBase = playerController;
            }
            else
            {
                //设置远程角色
                playerGO = resSvc.LoadPrefab(PathDefine.PlayerPath);
                if (playerGO.GetComponent <CharacterController>() != null)
                {
                    Destroy(playerGO.GetComponent <CharacterController>());
                }
                RemoteController remoteController = playerGO.AddComponent <RemoteController>();
                remoteController.SetRoleType(roleType);
                controllerDic.Add(roleType, remoteController);


                #region 设置实体数据
                RemoteEntity remoteEntity = new RemoteEntity(this, stateMgr);

                remoteEntity.SetCtrl(remoteController);
                remoteEntity.SetBattleProps(battlePropDic.TryGet(item.Key));
                //考虑了扩展游戏到AI
                //remoteEntity.SetRoleType(roleType);
                remoteEntity.Born();
                #endregion

                controllerBase = remoteController;
            }

            switch (roleType)
            {
            case RoleType.Red:
                playerGO.transform.position         = new Vector3(0, 0f, -30f);;
                playerGO.transform.localEulerAngles = new Vector3(0, 0, 0);
                playerGO.name = "Red";
                break;

            case RoleType.Blue:
                playerGO.transform.position         = new Vector3(0, 0, 30f);
                playerGO.transform.localEulerAngles = new Vector3(0, 180, 0);
                playerGO.name = "Blue";
                break;

            case RoleType.Yellow:
                playerGO.transform.position         = new Vector3(-30, 0, 30f);
                playerGO.transform.localEulerAngles = new Vector3(0, 180, 0);
                playerGO.name = "Yellow";
                break;

            case RoleType.Green:
                playerGO.transform.position         = new Vector3(30, 0, 30f);
                playerGO.transform.localEulerAngles = new Vector3(0, 180, 0);
                playerGO.name = "Green";
                break;

            case RoleType.Purple:
                playerGO.transform.position         = new Vector3(-30, 0, -30f);
                playerGO.transform.localEulerAngles = new Vector3(0, 0, 0);
                playerGO.name = "Purple";
                break;

            case RoleType.Black:
                playerGO.transform.position         = new Vector3(30, 0, -30f);
                playerGO.transform.localEulerAngles = new Vector3(0, 0, 0);
                playerGO.name = "Black";
                break;

            case RoleType.Orange:
                playerGO.transform.position         = new Vector3(22, 0, -5f);
                playerGO.transform.localEulerAngles = new Vector3(0, 0, 0);
                playerGO.name = "Orange";
                break;

            case RoleType.White:
                playerGO.transform.position         = new Vector3(-25, 0, -5f);
                playerGO.transform.localEulerAngles = new Vector3(0, 0, 0);
                playerGO.name = "White";
                break;
            }

            #region 添加枪支
            Transform  gunTrans = controllerBase.transform.Find(PathDefine.gunTransName).GetComponent <Transform>();
            GameObject go       = null;
            switch (battlePropDic.TryGet(item.Key).weapenType)
            {
            case WeapenType.Rifle:
                go      = resSvc.LoadPrefab(PathDefine.RiflePrefab);
                go.name = "Rifle";
                go.transform.SetParent(gunTrans);
                go.transform.localPosition    = new Vector3(0, 0, -0.1f);
                go.transform.localEulerAngles = Vector3.zero;
                go.transform.localScale       = Vector3.one;
                break;

            case WeapenType.Sniper:
                go      = resSvc.LoadPrefab(PathDefine.SniperPrefab);
                go.name = "Sniper";
                LineRenderer line = go.AddComponent <LineRenderer>();
                line.material   = Resources.Load <Material>("ResMaterials/Gun/Lin");
                line.startWidth = 0.3f;
                line.endWidth   = 0.3f;
                line.enabled    = false;
                lineRendererDic.Add(roleType, line);
                go.transform.SetParent(gunTrans);
                go.transform.localPosition = new Vector3(0, 0, -0.1f);
                go.transform.localRotation = Quaternion.Euler(Vector3.zero);
                go.transform.localScale    = new Vector3(0.7f, 0.7f, 0.7f);
                break;
            }
            #endregion
        }

        //设置我的武器
        playerEntity.SetPlayerWeapen();

        PECommon.Log("Init BattleMgr Done.");
    }