/// <summary> /// 战斗开始 /// </summary> /// <param name="battleid">战斗配置id</param> /// <param name="playercfgid">玩家配置id</param> public void BattleStart(int battleid, int playercfgid) { battleWnd = new BattleWnd(); Dictionary <int, BornPointCfg> bpcs = ConfigManager.instance.GetBornPoints(battleid); foreach (BornPointCfg bpc in bpcs.Values) { int roleid = bpc.RoleID == 0 ? playercfgid : bpc.RoleID; // 通过角色ID获取角色配置 RoleCfg roleCfg = ConfigManager.instance.GetRoleCfg(roleid); // 创建角色 Character character = CharacterManager.instance.Create(roleCfg, MathTools.GetPosition(bpc.Position)); //character.GlobalID = _idcounter++; character.side = roleCfg.RoleType == RoleType.Player ? RoleSide.Blue : RoleSide.Red; // 战斗界面监听战斗中的事件 character.hpChanged = battleWnd.CreateBloodText; character.characterDie = battleWnd.OnCharacterDie; // 角色创建 battleWnd.OnCharacterCreate(character); CharacterManager.instance.AddCharacter(character.GlobalID, character); } }
public void UpdateUI(int _index, RoleCfg _Data) { Index = _index; m_Data = _Data; RefreshUI(); }
public Monster(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position) { // 创建角色AI _behavior = Activator.CreateInstance(Type.GetType(_cfg.Behavior), new object[1] { this }) as BaseBehavior; }
/// <summary> /// 创建角色 /// </summary> /// <param name="roleCfg"></param> /// <param name="position"></param> /// <returns></returns> public Character Create(RoleCfg roleCfg, Vector3 position) { Type t = Type.GetType(roleCfg.RoleType.ToString()); return(Activator.CreateInstance(t, new object[3] { _roleidCounter++, roleCfg, position }) as Character); }
public virtual void Init(CharacterAttr attr) { this.characterid = (uint)attr.id; this.position = new Vector3(attr.pos.x, attr.pos.y, attr.pos.z); _cfg = ConfigManager.instance.GetRoleCfg(attr.cfgid); // 对象池创建对象 _transform = (PoolManager.instance.Spawn("Units/", _cfg.ModelName)).transform; _transform.position = position; _transform.localScale = Vector3.one; _animation = _transform.GetComponent <Animation>(); }
public float Sight; // 视野 public static CharacterAttr GetAttr(RoleCfg cfg) { CharacterAttr attr = new CharacterAttr(); attr.RoleType = cfg.RoleType; attr.Hp = cfg.Hp; attr.Mp = cfg.Mp; attr.MoveSpeed = cfg.MoveSpeed; attr.AttackSpeed = cfg.AttackSpeed; attr.Defend = cfg.Defend; attr.Sight = cfg.Sight; return(attr); }
// 角色上线 private void OnCharacterOnline(SocketModel model) { RespCharacterOnline resp = SerializeUtil.Deserialize <RespCharacterOnline>(model.message); DataCache.instance.currentCharacter = DataCache.instance.GetCharDTO(resp.characterid); // 创建玩家 CharacterDTO ch = DataCache.instance.currentCharacter; RoleCfg cfg = ConfigManager.instance.GetRoleCfg(ch.cfgid); Vector3 pos = new Vector3(ch.pos_x, ch.pos_y, ch.pos_z); Battle.instance.Create <Player>(ch); Battle.instance.isonline = true; }
public Player(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position) { _camera = Camera.main; // 计算相机偏移 _cameraOffset = _camera.transform.position - _transform.position; _targetTip = (GameObject.Instantiate(Resources.Load("Widgets/TargetTip")) as GameObject).transform; _targetTip.position = new Vector3(10000, 10000, 10000); _targetTip.localScale = Vector3.one; // 获取虚拟摇杆,添加摇杆监听事件 _joystick = GameObject.Find("UI/Canvas/Joystick").GetComponent <ETCJoystick>(); _joystick.gameObject.SetActive(true); _joystick.onMove.AddListener(OnJoystickMove); }
/// <summary> /// 获取场景中的其他玩家信息的应答 /// </summary> /// <param name="model"></param> private void OnSceneChar(SocketModel model) { if (model.message == null) { return; } RespSceneCharacters resp = SerializeUtil.Deserialize <RespSceneCharacters>(model.message); for (int i = 0; i < resp.characters.Count; i++) { CharacterDTO dto = resp.characters[i]; RoleCfg cfg = ConfigManager.instance.GetRoleCfg(dto.cfgid); Vector3 pos = new Vector3(dto.pos_x, dto.pos_y, dto.pos_z); //CharacterManager.instance.Create(dto.id, cfg, pos, typeof(OtherPlayer)); Battle.instance.Create <Player>(dto); } }
public void Initialize() { _roleName = _transform.Find("RoleName").GetComponent <InputField>(); Button btnReturn = _transform.Find("BtnReturn").GetComponent <Button>(); btnReturn.onClick.AddListener(OnReturn); Button btnEnterGame = _transform.Find("BtnCreateRole").GetComponent <Button>(); btnEnterGame.onClick.AddListener(OnCreateRole); Transform content = _transform.Find("Scroll View/Viewport/Content"); Button btnClone = _transform.Find("Scroll View/Viewport/BtnRole").GetComponent <Button>(); Dictionary <int, RoleCfg> roleCfgs = ConfigManager.instance.GetTypeRoleCfgs(RoleType.Player); currentRoleCfg = roleCfgs[1001]; foreach (RoleCfg cfg in roleCfgs.Values) { if (cfg.RoleType != RoleType.Player) { continue; } Transform btnRole = (GameObject.Instantiate(btnClone.gameObject) as GameObject).transform; btnRole.SetParent(content); btnRole.localScale = Vector3.one; btnRole.localPosition = Vector3.zero; btnRole.gameObject.SetActive(true); Text ID = btnRole.Find("ID").GetComponent <Text>(); ID.text = cfg.ID.ToString(); Text name = btnRole.Find("Name").GetComponent <Text>(); name.text = cfg.RoleName; btnRole.gameObject.AddComponent <ButtonClickListener>().cfg = cfg; } }
// 选择角色 public void ShowSelectRole() { WindowManager.instance.Open <SelectRoleWnd>().Initialize(); foreach (GameObject go in _roles.Values) { GameObject.Destroy(go); } _roles.Clear(); List <CharacterDTO> dtos = DataCache.instance.chDtos; for (int i = 0; i < dtos.Count; i++) { CharacterDTO dto = dtos[i]; RoleCfg cfg = ConfigManager.instance.GetRoleCfg(dto.cfgid); Transform role = (GameObject.Instantiate(Resources.Load("Units/" + cfg.ModelName)) as GameObject).transform; role.name = cfg.ModelName; role.localScale = Vector3.one; role.position = Vector3.zero; if (dto.id == dtos[0].id) { role.gameObject.SetActive(true); _currentRole = role.gameObject; DataCache.instance.currentCharacter = dto; } else { role.gameObject.SetActive(false); } _roles.Add(dto.id, role.gameObject); } }
public OtherPlayer(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position) { }
private void InserCustomRole() { // 插入自定义英雄 RoleCfg custom = new RoleCfg(); custom.ID = -1; custom.Name = "自定义"; custom.Alias = "无"; custom.Desc = "无"; custom.Sex = (int)CreateSys.Instance.SelectSex; custom.Type = (int)CreateSys.Instance.SelectType; custom.Trait = (int)CreateSys.Instance.SelectTrait; custom.State = (int)CreateSys.Instance.SelectState; custom.Star = 0; custom.Leading = 20; custom.Strength = 20; custom.Wit = 20; custom.Charm = 20; custom.politics = 20; m_ChoiceRole_lst.Add(custom); }
public Character(int globalid, RoleCfg roleCfg, Vector3 position) { _globalID = globalid; _cfg = roleCfg; // 通过配置获取原始属性 _originAttr = CharacterAttr.GetAttr(roleCfg); // 获取当前属性 _currAttr = _originAttr.Clone(); // 对象池创建对象 _transform = (PoolManager.instance.Spawn("Units/", _cfg.ModelName)).transform; _transform.position = position; _transform.localScale = Vector3.one; _navmeshAgent = _transform.gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>(); if (_navmeshAgent == null) { _navmeshAgent = _transform.gameObject.AddComponent <UnityEngine.AI.NavMeshAgent>(); } _navmeshAgent.speed = _originAttr.MoveSpeed; _navmeshAgent.enabled = false; _navmeshAgent.angularSpeed = 180; _animation = _transform.gameObject.GetComponent <Animation>(); // 在角色的GameObject上添加一个碰撞器 _collider = _transform.gameObject.GetComponent <CapsuleCollider>(); if (_collider == null) { _collider = _transform.gameObject.AddComponent <CapsuleCollider>(); } _collider.center = new Vector3(0, 1, 0); _collider.height = 2; // 添加ID代理 _idAgent = _transform.gameObject.GetComponent <IDAgent>(); if (_idAgent == null) { _idAgent = _transform.gameObject.AddComponent <IDAgent>(); } _idAgent.globalID = globalid; // 创建角色拥有的技能发射器 _skillCasters = new Dictionary <int, SkillCaster>(); Dictionary <int, SkillGroupCfg> skillGroupCfgs = ConfigManager.instance.GetSkillGroupCfgs(_cfg.ID); foreach (SkillGroupCfg cfg in skillGroupCfgs.Values) { SkillCaster caster = new SkillCaster(this); caster.SkillBasicCfg = ConfigManager.instance.GetSkillBasicCfg(cfg.ID); caster.SkillBulletCfg = ConfigManager.instance.GetSkillBulletCfg(cfg.ID); caster.SkillAOECfg = ConfigManager.instance.GetSkillAOECfg(cfg.ID); caster.SkillBuffCfg = ConfigManager.instance.GetSkillBuffCfg(cfg.ID); caster.SkillTrapCfg = ConfigManager.instance.GetSkillTrapCfg(cfg.ID); if (!_skillCasters.ContainsKey(cfg.ID)) { _skillCasters.Add(cfg.ID, caster); } } }
public Character Create(int globalid, Type t, RoleCfg roleCfg, Vector3 position) { return(Activator.CreateInstance(t, new object[3] { globalid, roleCfg, position }) as Character); }
public Npc(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position) { }