示例#1
0
        private void Attack(AttackDTO atk)
        {
            PlayerCtr obj    = models[atk.UserID];
            PlayerCtr target = models[atk.TargetID];

            obj.Attack(new Transform[] { target.transform });
        }
示例#2
0
 private void Damage(DamageDTO value)
 {
     foreach (int[] target in value.Targets)
     {
         PlayerCtr pc = models[target[0]];
         //实例化掉血数字
         FightScene.Instance.NumUp(pc.transform, target[1].ToString());
         pc.HpChange();
         if (pc.data.Id == GameData.user.ID)
         {
             FightScene.Instance.RefreshView(pc.data);
         }
         if (target[2] == 0)
         {
             if (target[0] >= 0)
             {
                 pc.gameObject.SetActive(false);
                 if (pc.data.Id == GameData.user.ID)
                 {
                     FightScene.Instance.Dead = true;
                 }
             }
             else
             {
                 Destroy(pc.gameObject);
             }
         }
     }
 }
示例#3
0
        public void RightClick(Vector3 pos)
        {
            Ray ray = mainCamera.ScreenPointToRay(pos);

            RaycastHit[] hits = Physics.RaycastAll(ray, 200);

            for (int i = hits.Length - 1; i >= 0; i--)
            {
                //如果是地方单位进行普通攻击
                if (hits[i].transform.gameObject.layer == LayerMask.NameToLayer("Enemy"))
                {
                    PlayerCtr ctr = hits[i].transform.GetComponent <PlayerCtr>();
                    if (Vector3.Distance(hero.transform.position, hits[i].transform.position) < ctr.data.AtkRange)
                    {
                        this.Wirte(Protocol.TYPE_FIGHT, 0, FightProtocol.ATTACK_CREQ, ctr.data.Id);
                        return;
                    }
                    continue;
                }
                //己方单位无视
                //如果是地板层 则开始寻路
                if (hits[i].transform.gameObject.layer == LayerMask.NameToLayer("Water"))
                {
                    MoveDTO dto = new MoveDTO();
                    dto.X = hits[i].point.x;
                    dto.Y = hits[i].point.y;
                    dto.Z = hits[i].point.z;
                    this.Wirte(Protocol.TYPE_FIGHT, 0, FightProtocol.MOVE_CREQ, dto);
                    return;
                }
            }
        }
示例#4
0
        public void OnTriggerEnter(Collider other)
        {
            PlayerCtr ctr = other.gameObject.GetComponent <PlayerCtr>();

            if (ctr != null)
            {
                if (ctr.data.Team != GetComponent <PlayerCtr>().data.Team)
                {
                    list.Add(other.gameObject);
                }
            }
        }
示例#5
0
        private void StartFight(FightRoomModel model)
        {
            room = model;

            //判断队伍
            int myTeam = -1;

            foreach (AbsFightModel item in model.teamOne)
            {
                if (item.Id == GameData.user.ID)
                {
                    myTeam = item.Team;
                }
            }
            if (myTeam == -1)
            {
                foreach (AbsFightModel item in model.teamTwo)
                {
                    if (item.Id == GameData.user.ID)
                    {
                        myTeam = item.Team;
                    }
                }
            }


            string path = null;

            foreach (AbsFightModel item in model.teamOne)
            {
                PlayerCtr ctrl = null;
                if (item.Type == ModelType.HUMAN)
                {
                    path = "Player/" + item.Code;
                    ctrl = Load(path, start1);
                    ctrl.Init((FightPlayerModel)item, myTeam);
                    this.models.Add(item.Id, ctrl);
                }
                else
                {
                    path = "Build/1_" + item.Code;
                    this.models.Add(item.Id, Load(path, position1[item.Code - 1]));
                }
                if (item.Id == GameData.user.ID)
                {
                    FightScene.Instance.InitView((FightPlayerModel)item, ctrl.gameObject);
                    FightScene.Instance.LookAt();
                }
            }

            foreach (AbsFightModel item in model.teamTwo)
            {
                PlayerCtr ctrl = null;
                if (item.Type == ModelType.HUMAN)
                {
                    path = "Player/" + item.Code;
                    ctrl = Load(path, start2);
                    ctrl.Init((FightPlayerModel)item, myTeam);
                    this.models.Add(item.Id, ctrl);
                }
                else
                {
                    path = "Build/2_" + item.Code;
                    this.models.Add(item.Id, Load(path, position2[item.Code - 1]));
                }
                if (item.Id == GameData.user.ID)
                {
                    FightScene.Instance.InitView((FightPlayerModel)item, ctrl.gameObject);
                    FightScene.Instance.LookAt();
                }
            }
        }