Esempio n. 1
0
    public void InitFightingHero(bool isInitPos = true)
    {
        ClearFightHero();
        Dictionary <long, Hero> heroes = DataManager.GetInstance().GetGameData().Heroes;

        foreach (KeyValuePair <long, Hero> heropair in heroes)
        {
            if (heropair.Value.teamPosition > -1)//必须在阵容
            {
                //HeroTableData heroTableData = DataManager.GetInstance().GetHeroTableDataByHero(heropair.Value);
                DIYTableData dIYTableData = DataManager.instance.GetDIYTableDatasById(heropair.Value.heroPartDic[HeroPart.Body]);
                if (dIYTableData != null)
                {
                    GameObject fighthero = EnityManager.GetInstance().CreateFightHero(heropair.Value);
                    fighthero.transform.SetParent(transform, false);
                    if (heroStartPos != null && heroStartPos.Length > heropair.Value.teamPosition)
                    {
                        fighthero.transform.position = heroStartPos[heropair.Value.teamPosition];
                    }
                    //if (heropair.Value.teamPosition == 2)
                    {
                        followHero = fighthero.transform;
                    }
                    FightHeros.Add(fighthero);
                }
            }
        }
        teamListPanel.InitTeamList();
    }
Esempio n. 2
0
    private void Start()
    {
        instance = this;

        spawnCoinTime     = Time.time + spawnCoinDelayTime;
        spawnMushroomTime = Time.time + spawnMushroomDelayTime;
        //spawnPortalTime = Time.time + spawnPortalDelayTime;
    }
Esempio n. 3
0
 public static EnityManager GetInstance()
 {
     if (sEnityManager == null)
     {
         sEnityManager = new EnityManager();
     }
     return(sEnityManager);
 }
Esempio n. 4
0
 public void UpdateHP()
 {
     if (Camera.current != null)// && HP != MaxHp)
     {
         Vector3 hpPos     = new Vector3(gameObject.transform.position.x, gameObject.transform.position.y + 2f, gameObject.transform.position.z);
         Vector3 screenPos = Camera.current.WorldToScreenPoint(hpPos);
         EnityManager.GetInstance().hpManager.UpdateEnityHPByEnityName(gameObject.name, screenPos, (float)HP / (float)MaxHp, (100 - gameObject.transform.position.z) / 100);
     }
 }
Esempio n. 5
0
 public void InitMonster(string[] monsterArr)
 {
     if (WayGameObject != null)
     {
         for (int i = 0; i < monsterArr.Length; i++)
         {
             int           monsterid     = int.Parse(monsterArr[i]);
             HeroTableData heroTableData = DataManager.GetInstance().GetHeroTableDataByHeroId(monsterid);
             if (heroTableData != null)
             {
                 GameObject enity = EnityManager.GetInstance().CreateEnity(EnityType.Enemy, heroTableData.heroPrefab);
                 enity.transform.SetParent(WayGameObject.transform.parent.transform, false);
                 enity.transform.position = monsterPosArr[i].position;
             }
         }
     }
 }
Esempio n. 6
0
    public void InitAIBaseByEnity(Enity enity)
    {
        this.enity = enity;

        selfType         = enity.enityType;
        attackType       = EnityManager.GetInstance().GetAttackEnityType(selfType);
        isCanMove        = enity.enityType == EnityType.Hero;
        searchRadius     = DataManager.instance.GetConfigValueToFloat("fight_search_radius");
        moveSpeed        = DataManager.instance.GetConfigValueToFloat("fight_move_speed");
        moveAnimatorType = AnimatorAction.Run;
        animator         = enity.gameObject.GetComponent <Animator>();
        //////////////////////////判断是否装备武器///////////////////////////////////
        Item equip = enity.GetEnityEquip();

        if (equip != null)
        {
            aiWeapon = gameObject.AddComponent <AIWeapon>();
            aiWeapon.InitWeaponByEquip(equip);
        }
        isInit = true;
    }
Esempio n. 7
0
 public void Awake()
 {
     Singleton = this;
     characters = new Dictionary<Guid, SlideCharacter>();
     avatars = new Dictionary<Guid, GameObject>();
 }
Esempio n. 8
0
    // Update is called once per frame
    void Update()
    {
        timeCumulative += Time.deltaTime;
        if (isInit)
        {
            //timeCumulative = 0.0f;
            ///////////////搜索周边敌人////////////////////////////
            //print("attackType:" + attackType.ToString());
            //if(EnemyManager.GetInstance().GetEnemysCount(attackType) == 0)
            {
                //transform.LookAt(Vector3.forward);
                //DoAction(AnimatorParameters.Victory, ActionParamtersType.Bool, 1);
                //return;
            }

            List <GameObject> targetList         = GetGameObjectsByAttackTargetType(attackType);
            AnimatorStateInfo _animatorStateInfo = animator.GetCurrentAnimatorStateInfo(0);
            if (targetList.Count > 0)                                                     //有攻击目标
            {
                if (attackTargetNum > 0 && aiWeapon != null)                              //攻击数量
                {
                    GameObject        lockTarget               = null;                    //锁定最近的目标
                    float             distanceTemp             = float.MaxValue;
                    List <GameObject> inAttackRadiusTargetList = new List <GameObject>(); //在攻击范围内的怪物
                    for (int i = 0; i < attackTargetNum; i++)
                    {
                        GameObject target   = targetList[i];
                        float      distance = Vector3.Distance(target.transform.position, transform.position);
                        if (distanceTemp > distance)
                        {
                            distanceTemp = distance;
                            lockTarget   = target;
                        }
                        if (aiWeapon.attackRadius > distance)//在攻击范围内
                        {
                            inAttackRadiusTargetList.Add(target);
                        }
                    }

                    if (inAttackRadiusTargetList.Count > 0)//有可以攻击的怪物
                    {
                        if (!EnityManager.GetInstance().hpManager.IsCreateHP(gameObject.name))
                        {
                            UpdateHP();
                        }

                        transform.rotation = Quaternion.LookRotation(lockTarget.transform.position - transform.position);//先调整方向,朝向最近目标

                        ///////////////////好,攻击目标开始!//////////////////////////////
                        if (animator.parameterCount > (int)attackAnimatorType)
                        {
                            //DoAction(moveAnimatorType, ActionParamtersType.Bool, 0);//如果在跑动,先停止跑动
                            this.enity.OnPlayAnimation(moveAnimatorType, 0);
                            if (aiWeapon.timeCumulative > aiWeapon.attackSpeed)
                            {
                                aiWeapon.timeCumulative = 0.0f;
                                aiWeapon.isCanAttack    = true;
                                this.enity.OnPlayAnimation(attackAnimatorType);
                                //DoAction(attackAnimatorType, ActionParamtersType.Trigger);
                            }
                            //AnimatorStateInfo info = animator.GetCurrentAnimatorStateInfo(0);
                            // 判断动画是否播放完成
                            if (_animatorStateInfo.normalizedTime >= 0.7f)
                            {
                                //if (animator.parameterCount > (int)attackAnimatorType)//判断是否有这个参数INDEX
                                {
                                    string _animatorParameterName = animator.GetParameter((int)attackAnimatorType).name;
                                    if (_animatorStateInfo.IsName(_animatorParameterName))
                                    {
                                        if (aiWeapon.isCanAttack)
                                        {
                                            //播放完毕,要执行的内容
                                            //print("info:" + info.ToString());
                                            aiWeapon.isCanAttack = false;
                                            aiWeapon.OnAttackTarget(lockTarget, 0);
                                        }
                                    }
                                }
                            }
                        }
                        else
                        {
                            //没有武器自爆处理
                            //KillSelf();
                        }
                    }
                    else//需要移动过去,如果可以移动的话
                    {
                        if (isCanMove)//先判断是否可以跑动
                        {
                            this.enity.OnPlayAnimation(moveAnimatorType);
                            //DoAction(moveAnimatorType, ActionParamtersType.Bool);//播放跑动动画
                            //transform.rotation = Quaternion.LookRotation(lockTarget.transform.position - transform.position);//先调整方向,朝向目标
                            transform.LookAt(lockTarget.transform.position);
                            //if (animator.parameterCount > (int)moveAnimatorType && _animatorStateInfo.IsName(animator.GetParameter((int)moveAnimatorType).name))//判断在运动状态再移动,不然会出现还在攻击状态下漂移的情况
                            if (this.enity.animatorAction == AnimatorAction.Run)
                            {
                                //////////////开始移动////////////////////////
                                //transform.position = transform.position + transform.forward.normalized * 0.1f;
                                //GameObject projectile = Instantiate(bombPrefab, spawnPosition.position, Quaternion.identity) as GameObject;
                                //projectile.transform.LookAt(target.transform.position);
                                GetComponent <Rigidbody>().MovePosition(transform.position + transform.forward.normalized * moveSpeed);
                            }
                        }
                    }
                    currentLockTarget = lockTarget;
                }
            }
            else
            {
                if (selfType.ToString() == EnityType.Hero.ToString())
                {
                    this.enity.OnPlayAnimation(moveAnimatorType);
                    //DoAction(moveAnimatorType, ActionParamtersType.Bool, 1);
                    if (this.enity.animatorAction == AnimatorAction.Run)//判断在运动状态再移动,不然会出现还在攻击状态下漂移的情况
                    {
                        transform.rotation = initRotation;
                        GetComponent <Rigidbody>().MovePosition(transform.position + transform.forward.normalized * moveSpeed);
                    }
                }
            }
        }
    }
Esempio n. 9
0
 public void Awake()
 {
     Singleton  = this;
     characters = new Dictionary <Guid, SlideCharacter>();
     avatars    = new Dictionary <Guid, GameObject>();
 }