Пример #1
0
    void Update()
    {
        if (m_CurrCount < m_MaxCount)
        {
            if (Time.time > m_PrevCreatTime + UnityEngine.Random.Range(1.5f, 3.5f))
            {
                m_PrevCreatTime = Time.time;
                //创建怪
                GameObject objClone = RoleMgr.Instance.LoadRole(monsterName, RoleType.Monster);

                objClone.transform.parent   = transform;
                objClone.transform.position = transform.TransformPoint(new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
                RoleCtrl roleCtrl = objClone.GetComponent <RoleCtrl>();
                roleCtrl.BornPoint = objClone.transform.position;

                RoleInfoMonster roleInfo = new RoleInfoMonster();
                roleInfo.RoelServerID = DateTime.Now.Ticks;
                roleInfo.RoleID       = 1;
                roleInfo.CurrHP       = roleInfo.MaxHP = 1000;
                roleInfo.NickName     = "偷书盗贼";

                roleCtrl.Init(RoleType.Monster, roleInfo, new RoleMonsterAI(roleCtrl));

                roleCtrl.OnRoleDie = RoleDie;

                m_CurrCount++;
            }
        }
    }
Пример #2
0
    /// <summary>
    /// 刷怪
    /// </summary>
    void Update()
    {
        if (m_CurrCount < m_MaxCount)
        {
            if (Time.time > m_CreateTime)
            {
                m_CreateTime = Time.time + UnityEngine.Random.Range(1.5f, 3.5f);
                GameObject moster = RoleMgr.Instance.LoadRole(RoleType.Monster, m_MonsterName);
                moster.transform.parent = transform;
                //在指定区域随机刷处怪物
                moster.transform.position = transform.transform.TransformPoint(new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
                m_CurrCount++;

                RoleInfoMonster roleInfo = new RoleInfoMonster();
                roleInfo.NickName     = "骑兵";
                roleInfo.RoleServerId = DateTime.Now.Ticks;
                roleInfo.MaxHp        = roleInfo.CurrHp = 1000;
                roleInfo.RoleId       = 1;

                RoleCtrl ctrl = moster.GetComponent <RoleCtrl>();
                ctrl.BornPos = transform;

                ctrl.OnDie = OnMonsterDie;

                RoleMonsterAI ai = new RoleMonsterAI(ctrl);

                ctrl.Init(RoleType.Monster, roleInfo, ai);
            }
        }
    }
Пример #3
0
    private void CreateMonster()
    {
        //if (m_CurrentCreateCount > 0) return;
        m_Index = UnityEngine.Random.Range(0, m_CurrentRegionMonsterList.Count);
        GameLevelMonsterEntity levelMonsterEntity = m_CurrentRegionMonsterList[m_Index];
        SpriteEntity           spriteEntity       = SpriteDBModel.Instance.Get(levelMonsterEntity.SpriteId);

        if (spriteEntity == null || levelMonsterEntity == null)
        {
            return;
        }
        if (!monsterCreateDic.ContainsKey(m_Index))
        {
            monsterCreateDic[m_Index] = levelMonsterEntity.SpriteCount;
        }
        string prefabName = spriteEntity.PrefabName;

        monsterCreateDic[m_Index]--;
        if (monsterCreateDic[m_Index]-- < 0)
        {
            monsterCreateDic.Remove(m_Index);
        }
        Transform obj = m_Pool.Spawn(prefabName);

        obj.position         = m_CurRegionCtrl.GetMonsterBornPos;
        obj.localEulerAngles = Vector3.zero;
        obj.localScale       = Vector3.one;
        RoleCtrl ctrl = obj.GetComponent <RoleCtrl>();

        ctrl.OnRoleDie     = OnRoleDieCallBack;
        ctrl.OnRoleDestory = OnRoleDestoryCallBack;
        RoleInfoMonster info = new RoleInfoMonster(spriteEntity);

        info.RoleId       = ++m_TempIndex;
        info.RoleNickName = spriteEntity.Name;
        info.Level        = spriteEntity.Level;
        //info.Exp = spriteEntity.RewardExp;
        info.MaxHP     = spriteEntity.HP;
        info.CurrentHP = spriteEntity.HP;
        info.MaxMP     = spriteEntity.MP;
        info.CurrentMP = spriteEntity.MP;
        info.Attack    = spriteEntity.Attack;
        info.Defense   = spriteEntity.Defense;
        info.Hit       = spriteEntity.Hit;
        info.Dodge     = spriteEntity.Dodge;
        info.Res       = spriteEntity.Res;
        info.Cri       = spriteEntity.Cri;
        info.Fighting  = spriteEntity.Fighting * 100;
        ctrl.Init(RoleType.Monster, info, new GameLevel_RoleMonsterAI(ctrl, info));
        ctrl.Born(obj.position);
        ctrl.ViewRange = spriteEntity.Range_View;
        m_CurrentCreateCount++;
    }
Пример #4
0
    /// <summary> 刷怪 </summary>
    private void CreateMonster()
    {
        //临时测试
        //if (m_CurrRegionCreateMonsterCount>=1) return;

        if (m_RegionMonsterList.Count == 0)
        {
            return;
        }
        for (int i = 0; i < 1; i++)
        {
            m_Index = UnityEngine.Random.Range(0, m_RegionMonsterCountList.Count);
            if (m_RegionMonsterCountList[m_Index] == 0)
            {
                i--;
            }
        }
        int             monsterId     = m_RegionMonsterList[m_Index].MonsterId;
        RoleInfoMonster monsterInfo   = new RoleInfoMonster();
        MonsterEntity   monsterEntity = MonsterDBModel.Instance.Get(monsterId);

        monsterInfo.MonsterEntity          = monsterEntity;
        monsterInfo.GameLevelMonsterEntity = GameLevelMonsterDBModel.Instance.GetGameLevelMonsterEntity(GameLevelCtrl.Instance.ChapterId, GameLevelCtrl.Instance.GameLevelId, m_CurrRegionIndex + 1, monsterId);
        monsterInfo.RoleId = ++m_MonsterTempId;
        m_KillMonsterIdList.Add(monsterInfo.RoleId);
        monsterInfo.SetMonsterData(monsterEntity);
        //从池子中取怪
        Transform monsterTrans = m_MonsterPool.Spawn(MonsterDBModel.Instance.Get(monsterId).PrefabName);
        //将怪放在出生点
        Transform monsterBornPos = m_CurrRegionctrl.MonsterBornPos[UnityEngine.Random.Range(0, m_CurrRegionctrl.MonsterBornPos.Length)];
        RoleCtrl  monsterCtrl    = monsterTrans.GetComponent <RoleCtrl>();

        monsterCtrl.PatrolRadius = monsterEntity.PatrolRadius;
        monsterCtrl.ViewRadius   = monsterEntity.ViewRadius;
        monsterCtrl.Speed        = monsterEntity.MoveSpeed;
        monsterCtrl.Init(RoleType.Monster, monsterInfo, new GameLevelRoleMonsterAI(monsterCtrl, monsterInfo));
        monsterCtrl.OnRoleDie     = OnRoleDieCallBack;
        monsterCtrl.OnRoleDestroy = OnRoleDestroyCallBack;
        monsterCtrl.SetBornPoint(monsterBornPos.TransformPoint(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
        m_RegionMonsterCountList[m_Index]--;
        m_CurrRegionCreateMonsterCount++;
    }
Пример #5
0
    /// <summary>
    /// 加载其他玩家
    /// </summary>
    /// <param name="roleId">角色编号</param>
    /// <param name="nickName">昵称</param>
    /// <param name="roleLevel">等级</param>
    /// <param name="jobId">职业编号</param>
    /// <param name="maxHP"></param>
    /// <param name="currHP"></param>
    /// <param name="maxMP"></param>
    /// <param name="currMP"></param>
    /// <returns></returns>
    public RoleCtrl LoadOtherRole(int roleId, string nickName, int roleLevel, int jobId, int maxHP, int currHP, int maxMP, int currMP)
    {
        GameObject roleObj  = Object.Instantiate(GlobalInit.Instance.JobObjectDic[jobId]);
        RoleCtrl   roleCtrl = roleObj.GetComponent <RoleCtrl>();

        //角色初始化的时候 要赋值基本信息
        //以后 包括 帮会信息 称号信息 等 也都要进行同步
        RoleInfoMainPlayer roleInfo = new RoleInfoMainPlayer();

        roleInfo.RoldId       = roleId;
        roleInfo.RoleNickName = nickName;
        roleInfo.Level        = roleLevel;
        roleInfo.JobId        = (byte)roleId;
        roleInfo.MaxHP        = maxHP;
        roleInfo.CurrHP       = currHP;
        roleInfo.MaxMP        = maxMP;
        roleInfo.CurrMP       = currMP;

        roleCtrl.Init(RoleType.OTherRole, roleInfo, new OtherRoleAI(roleCtrl));

        return(roleCtrl);
    }