/// <summary> /// 受击 /// </summary> /// <param name="soldier"></param> /// <returns>是否死亡</returns> public bool hit(GeneralSoldier soldier) { GeneralSoldier attackTarget = (GeneralSoldier)soldier._data.AttackTarget; if (attackTarget == null) { return(true); } bool isDead = attackTarget.hurt(soldier._data.PhysicalStrength); if (isDead) { removeSoldier(attackTarget); if (_selfSoldiers.Count == 0) { //发战斗失败消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_FAILED); } if (_enemySoldiers.Count == 0) { //发战斗胜利消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_VICTORY); } } return(isDead); }
/// <summary> /// 攻击状态构造函数 /// </summary> /// <param name="host"></param> public GeneralAttackState(GeneralSoldier host) : base(host) { //取得士兵和动画 soldier = host; animator = soldier.GetComponent <Animator>(); }
public void setText(GeneralSoldier soldier, string str) { if(true) { return; } //摄像机对象 _camera = Camera.main; //获取角色head模型 headTr = soldier.gameObject.transform.Find("head"); //得到模型head坐标 float size_y = headTr.position.y; //得到模型缩放比例 float scal_y = transform.localScale.y; //乘积就是高度 playerHeight = scal_y * size_y; //计算世界坐标 worldPostion = new Vector3(soldier.gameObject.transform.position.x, soldier.gameObject.transform.position.y + playerHeight, soldier.gameObject.transform.position.z); //根据对象头顶的3D坐标换算成它在2D屏幕中的坐标 postion = _camera.WorldToScreenPoint(worldPostion); //得到真实对象头顶的2D坐标 postion = new Vector2(postion.x, Screen.height - postion.y); //设置伤害 dmgText.text = str; //获取画布 GameObject canvas = GameObject.Find("Canvas"); dmgText.transform.SetParent(canvas.transform); //设置锚点 RectTransform rt = dmgText.gameObject.transform as RectTransform; rt.anchoredPosition = Vector2.zero; dmgText.gameObject.transform.localScale = Vector3.one; //设置坐标 dmgText.transform.position = postion; //缓动 iTween.FadeTo(gameObject, 0.1f, 1); iTween.ScaleTo(gameObject, new Vector3(2, 2, 2), 1); Hashtable hxb = new Hashtable(); hxb.Add("position", new Vector3(dmgText.transform.position.x, dmgText.transform.position.y + 180, dmgText.transform.position.z)); hxb.Add("time", 1.1f); hxb.Add("easetype", iTween.EaseType.easeOutCubic); hxb.Add("oncomplete", "onAnimationEnd"); hxb.Add("oncompletetarget", this.gameObject); hxb.Add("oncompleteparams", this.gameObject.name); iTween.MoveTo(gameObject, hxb); }
/// <summary> /// 攻击状态构造函数 /// </summary> /// <param name="host"></param> public GeneralHurtState(GeneralSoldier host) : base(host) { //取得士兵和动画 soldier = host; animator = soldier.GetComponent<Animator>(); }
/// <summary> /// 攻击状态构造函数 /// </summary> /// <param name="host"></param> public GeneralWalkState(GeneralSoldier host) : base(host) { //取得士兵和动画 _host = host; _navmeshAgent = _host.GetComponent <NavMeshAgent>(); }
/// <summary> /// 攻击状态构造函数 /// </summary> /// <param name="host"></param> public GeneralWalkState(GeneralSoldier host) : base(host) { //取得士兵和动画 _host = host; _navmeshAgent = _host.GetComponent<NavMeshAgent>(); }
/// <summary> /// 添加一个士兵——————测试用 /// </summary> /// <param name="country"></param> /// <param name="x_"></param> /// <param name="y_"></param> public void addSoldier(SoldierDataBase data, Defaults.SoldierType soldierType, Vector3 point) { //复制预制件 GameObject soldierBody = ResourceManager.getInstance().getGameObject(ResourceConfig.getPrefabName(soldierType)); soldierBody.name = null; if (data == null) { return; } if (data.Country == Defaults.Country.Me) { soldierBody.name = "me" + sprId; } else { soldierBody.name = "enemy" + sprId; } sprId++; //如果取得预制件失败,返回 if (soldierBody == null) { return; } //根据兵种实例化兵种类,绑定到预制件 Type scriptType = ResourceConfig.getClassType(soldierType); soldierBody.AddComponent(scriptType); GeneralSoldier soldierScript = soldierBody.GetComponent(scriptType) as GeneralSoldier; //如果取得脚本失败,返回 if (soldierScript == null) { return; } //设置属性 soldierScript._data = data; //势力 soldierScript._data.DeadDelay = 10; soldierScript._data.SkillMgr.setSkills(soldierScript); //技能 int distance = data.Country == Defaults.Country.Me ? 14 : 26; //敌我距离 soldierBody.transform.Rotate(0, data.Country == Defaults.Country.Me ? 0 : 180, 0); //设置敌我部队的朝向 soldierBody.transform.position = point; //设置坐标 //存进士兵容器 if (data.Country == Defaults.Country.Enemy) { _enemySoldiers.Add(soldierScript); } else { _selfSoldiers.Add(soldierScript); } }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralDeadState(GeneralSoldier host) : base(host) { _host = host; //初始化 init(); }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralDeadState(GeneralSoldier host) : base(host) { _host = host; //初始化 init(); }
/// <summary> /// 战斗失败 /// </summary> private void battlestateFailed() { //敌方全员播放胜利动作 for (int i = 0; i < SpriteMgr.getInstance().EnemySoldiers.Count; i++) { GeneralSoldier soldier = SpriteMgr.getInstance().EnemySoldiers[i] as GeneralSoldier; soldier.setState(soldier.WinState); } //弹失败窗口 UIManager.getInstance().openPanel(PanelConfig.FAILEDPANEL); Debug.Log("弹失败窗口"); }
/// <summary> /// eman -- 释放者对象 /// skillList -- 技能id列表 /// </summary> /// <param name="eman"></param> public void setSkills(GeneralSoldier eman) { if (eman._data.Skills == null) { return; } for (int i = 0; i < eman._data.Skills.Length; ++i) { Skill skill = new Skill(eman, eman._data.Skills[i]); // 保存技能 if (eman._data.Skills[i] != 0 && !_skillList.ContainsKey(eman._data.Skills[i])) { _skillList.Add(eman._data.Skills[i], skill); } } }
/// <summary> /// eman -- 释放者对象 /// skillList -- 技能id列表 /// </summary> /// <param name="eman"></param> public void setSkills(GeneralSoldier eman) { if (eman._data.Skills == null) { return; } for (int i = 0; i < eman._data.Skills.Length; ++i) { Skill skill = new Skill(eman, eman._data.Skills[i]); // 保存技能 if (eman._data.Skills[i] != 0 && !_skillList.ContainsKey(eman._data.Skills[i])) { _skillList.Add(eman._data.Skills[i], skill); } } }
public Skill(GeneralSoldier soldier, int id) { if (id == 0) { return; } skillId = id; // 数据 _skillData = new SkillData(id); mountPoint = getBindType(0);//(_skillData.Skill.getBindType()); _eman = soldier; //加载技能所需要的特效 loadSkllResource(); setInstance(); }
public Skill(GeneralSoldier soldier, int id) { if (id == 0) { return; } skillId = id; // 数据 _skillData = new SkillData(id); mountPoint = getBindType(0);//(_skillData.Skill.getBindType()); _eman = soldier; //加载技能所需要的特效 loadSkllResource(); setInstance(); }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralWinState(GeneralSoldier host) : base(host) { //取得士兵的动画 _host = host; }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralMoveState(GeneralSoldier host) : base(host) { _host = host; }
/// <summary> /// 受击 /// </summary> /// <param name="soldier"></param> /// <returns>是否死亡</returns> public bool hit(GeneralSoldier soldier) { GeneralSoldier attackTarget = (GeneralSoldier)soldier._data.AttackTarget; if (attackTarget == null) { return true; } bool isDead = attackTarget.hurt(soldier._data.PhysicalStrength); if (isDead) { removeSoldier(attackTarget); if (_selfSoldiers.Count == 0) { //发战斗失败消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_FAILED); } if(_enemySoldiers.Count == 0) { //发战斗胜利消息 XLMessageManager.getInstance().sendNotification(BattleController.BATTLESTATE_VICTORY); } } return isDead; }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralMoveState(GeneralSoldier host) : base(host) { _host = host; }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralFindState(GeneralSoldier host) : base(host) { _host = host; }
public void setText(GeneralSoldier soldier, string str) { if (true) { return; } //摄像机对象 _camera = Camera.main; //获取角色head模型 headTr = soldier.gameObject.transform.Find("head"); //得到模型head坐标 float size_y = headTr.position.y; //得到模型缩放比例 float scal_y = transform.localScale.y; //乘积就是高度 playerHeight = scal_y * size_y; //计算世界坐标 worldPostion = new Vector3(soldier.gameObject.transform.position.x, soldier.gameObject.transform.position.y + playerHeight, soldier.gameObject.transform.position.z); //根据对象头顶的3D坐标换算成它在2D屏幕中的坐标 postion = _camera.WorldToScreenPoint(worldPostion); //得到真实对象头顶的2D坐标 postion = new Vector2(postion.x, Screen.height - postion.y); //设置伤害 dmgText.text = str; //获取画布 GameObject canvas = GameObject.Find("Canvas"); dmgText.transform.SetParent(canvas.transform); //设置锚点 RectTransform rt = dmgText.gameObject.transform as RectTransform; rt.anchoredPosition = Vector2.zero; dmgText.gameObject.transform.localScale = Vector3.one; //设置坐标 dmgText.transform.position = postion; //缓动 iTween.FadeTo(gameObject, 0.1f, 1); iTween.ScaleTo(gameObject, new Vector3(2, 2, 2), 1); Hashtable hxb = new Hashtable(); hxb.Add("position", new Vector3(dmgText.transform.position.x, dmgText.transform.position.y + 180, dmgText.transform.position.z)); hxb.Add("time", 1.1f); hxb.Add("easetype", iTween.EaseType.easeOutCubic); hxb.Add("oncomplete", "onAnimationEnd"); hxb.Add("oncompletetarget", this.gameObject); hxb.Add("oncompleteparams", this.gameObject.name); iTween.MoveTo(gameObject, hxb); }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralFindState(GeneralSoldier host) : base(host) { _host = host; }
/// <summary> /// 生成下一个战场的显示内容 /// </summary> private void creatNextBattle(BattleData data) { int spriteCount = 0; bool isBreak = false; if (num == 1) { //生成自己的部队 for (int i = 0; i < MyFormationData.formationList.Count; i++) { for (int j = 0; j < MyFormationData.formationList[i].SoldiersDict.Count; j++) { if (MyFormationData.formationList[i].SoldiersDict[j] != null) { MyFormationData.formationList[i].SoldiersDict[j].Country = Defaults.Country.Me; if (i == 0) { SpriteMgr.getInstance().addSoldier(MyFormationData.formationList[i].SoldiersDict[j], Defaults.SoldierType.Cavalryman, new Vector3(j % 3 + _mySoldierPoints[i].x, 0 + _mySoldierPoints[i].y, (int)(j / 3) + _mySoldierPoints[i].z)); } else { SpriteMgr.getInstance().addSoldier(MyFormationData.formationList[i].SoldiersDict[j], Defaults.SoldierType.Armorman, new Vector3(j % 3 + _mySoldierPoints[i].x, 0 + _mySoldierPoints[i].y, (int)(j / 3) + _mySoldierPoints[i].z)); } if (++spriteCount >= SPRITE_COUNT) { isBreak = true; break; } } } if (isBreak) { break; } } } spriteCount = 0; if (num == 0) { //自己部队停止动作 for (int i = 0; i < SpriteMgr.getInstance().SelfSoldiers.Count; i++) { GeneralSoldier soldier = SpriteMgr.getInstance().SelfSoldiers[i] as GeneralSoldier; soldier.setState(soldier.IdleState); soldier.IsDebug = true; if (++spriteCount >= SPRITE_COUNT) { break; } } } //生成敌人的部队 spriteCount = 0; isBreak = false; for (int i = 0; i < campaignData.BattleList[campaignData.battleIndex].FormationList.Count; i++) { for (int j = 0; j < campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict.Count; j++) { //Debug.Log(i + " " + j + " " + campaignData.BattleList[campaignData.battleIndex].FormationList[i].soldiersDict[j]); if (campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j] != null) { campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j].Country = Defaults.Country.Enemy; if (j == 0) { SpriteMgr.getInstance().addSoldier(campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j], Defaults.SoldierType.Masterman, new Vector3(j % 3 + _enemySoldierPoints[i].x, 0 + _enemySoldierPoints[i].y, (int)(j / 3) + _enemySoldierPoints[i].z)); } else { SpriteMgr.getInstance().addSoldier(campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j], Defaults.SoldierType.Axeman, new Vector3(j % 3 + _enemySoldierPoints[i].x, 0 + _enemySoldierPoints[i].y, (int)(j / 3) + _enemySoldierPoints[i].z)); } } if (++spriteCount >= SPRITE_COUNT) { isBreak = true; break; } } if (isBreak) { break; } } }
/// <summary> /// 待机状态构造函数 /// </summary> /// <param name="host"></param> public GeneralWinState(GeneralSoldier host) : base(host) { //取得士兵的动画 _host = host; }