private void Attack(AttackDTO atk) { PlayerCtr obj = models[atk.UserID]; PlayerCtr target = models[atk.TargetID]; obj.Attack(new Transform[] { target.transform }); }
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); } } } }
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; } } }
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); } } }
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(); } } }