public SoliderCaptiver(AbsEnemy _enemy)
    {
        enemy = _enemy;
        CharacterAttr attr = new CharacterAttr(enemy.CharacterAttr.AttrStrategy, enemy.CharacterAttr.BaseAttr, 1);

        OnInit(enemy.CharacterGameObject, attr, enemy.Weapon, enemy.Position);
    }
    public override T Create <T>(CharacterDTO dto)
    {
        T             ch   = new T();
        CharacterAttr attr = CharacterAttr.GetAttr(dto);
        Type          t    = typeof(T);

        switch (t.Name)
        {
        case "Player":
            attr.type = CharacterType.Player;
            break;

        case "Monster":
            attr.type = CharacterType.Monster;
            break;

        case "Npc":
            attr.type = CharacterType.Npc;
            break;
        }

        // 初始化角色属性
        ch.Init(attr);

        // 初始化导航代理
        ch.InitNavmeshAgent(_navmeshQuery);

        // 将创建的角色添加到字典中
        if (!_characters.ContainsKey(ch.characterid))
        {
            _characters.Add(ch.characterid, ch);
        }

        return(ch);
    }
Example #3
0
    public virtual void Init(CharacterAttr attr)
    {
        this.attr        = attr;
        this.characterid = attr.id;
        this.sceneid     = attr.mapid;

        _transform = new RoleTransform();
    }
 public AbsCharacter OnInit(GameObject _gameObject, CharacterAttr _characterAttr, AbsWeapon _weapon, Vector3 _pos)
 {
     CharacterGameObject = _gameObject;
     CharacterGameObject.transform.position = _pos;
     CharacterAttr = _characterAttr;
     navMeshAgent  = _gameObject.GetComponent <NavMeshAgent>();
     audioSource   = _gameObject.GetComponent <AudioSource>();
     anim          = _gameObject.GetComponentInChildren <Animation>();
     collider      = _gameObject.GetComponent <CapsuleCollider>();
     Weapon        = _weapon;
     Weapon.OnInit(this);
     return(this);
 }
Example #5
0
    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);
    }
Example #6
0
    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>();
    }
Example #7
0
    public T Create <T>(CharacterDTO dto) where T : Character, new()
    {
        T             ch   = new T();
        CharacterAttr attr = CharacterAttr.GetAttr(dto);

        ch.Init(attr);
        ch.InitNavmeshAgent(_navmeshQuery);

        // 将创建的角色添加到字典中
        if (!_roles.ContainsKey(ch.characterid))
        {
            _roles.Add(ch.characterid, ch);
        }

        return(ch);
    }
    public static CharacterAttr GetAttr(common.CharacterDTO dto)
    {
        CharacterAttr attr = new CharacterAttr();

        attr.id        = dto.id;
        attr.accountid = dto.accountid;
        attr.name      = dto.name;
        attr.race      = (Race)dto.race;
        attr.job       = (Job)dto.job;
        attr.gender    = dto.gender;
        attr.level     = dto.level;
        attr.exp       = dto.exp;
        attr.diamond   = dto.diamond;
        attr.gold      = dto.gold;
        attr.pos       = new Luna3D.Vector3(dto.pos_x, dto.pos_y, dto.pos_z);
        attr.cfgid     = dto.cfgid;
        attr.mapid     = dto.mapid;

        return(attr);
    }
Example #9
0
    public int CopyFrom(CharacterAttr src)
    {
        this.HP    = src.HP;
        this.MP    = src.MP;
        this.SP    = src.SP;
        this.MaxHP = src.MaxHP;
        this.MaxMP = src.MaxMP;
        this.MaxSP = src.MaxSP;

        this.AP         = src.AP;
        this.DF         = src.DF;
        this.HPRECOVER  = src.HPRECOVER;
        this.MPRECOVER  = src.MPRECOVER;
        this.SPRECOVER  = src.SPRECOVER;
        this.CRIT       = src.CRIT;
        this.CRITDAMAGE = src.CRITDAMAGE;
        this.CRITDF     = src.CRITDF;
        this.SUCK       = src.SUCK;
        this.DODGE      = src.DODGE;
        this.HIT        = src.HIT;
        this.ABSORB     = src.ABSORB;
        this.REFLEX     = src.REFLEX;
        this.SPEED      = src.SPEED;

        this.IAP = src.IAP;
        this.FAP = src.FAP;
        this.BAP = src.BAP;
        this.LAP = src.LAP;
        this.IDF = src.IDF;
        this.FDF = src.FDF;
        this.BDF = src.BDF;
        this.LDF = src.LDF;

        this.INJURYFREE = src.INJURYFREE;
        this.ATKEWHP    = src.ATKEWHP;
        this.ATKEWMP    = src.ATKEWMP;
        this.ATKEWSP    = src.ATKEWSP;
        this.ATKEWAP    = src.ATKEWAP;
        return(0);
    }
Example #10
0
 //被攻击
 public virtual void underAttack(ICharacter theAttacker)
 {
     CharacterAttr.calDmg(theAttacker);
     //if (m_characterAttr.getCurHP() <= 0)
     //showDeathEffect();
 }
Example #11
0
 public void InitComp()
 {
     charAttr = new CharacterAttr(100f, 12f, 10f, this);
 }
Example #12
0
    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 override GameObject AddGameObject(CharacterAttr attr)
 {
     return(FactoryManager.AssetFactory.LoadEnemy(attr.PrefabName));
 }
 public abstract GameObject AddGameObject(CharacterAttr attr);
Example #15
0
    public override GameObject AddGameObject(CharacterAttr attr)
    {
        var _gameObject = FactoryManager.AssetFactory.LoadSoldier(attr.PrefabName);

        return(_gameObject);
    }
Example #16
0
 public override void Init(CharacterAttr attr)
 {
     base.Init(attr);
 }
Example #17
0
    public override void Init(CharacterAttr attr)
    {
        base.Init(attr);

        _camera = Camera.main;
    }