public void OnAttackButtonClick(bool isPress, PosType posType) { if (this.GetComponent <PlayerAttack>().isDead) { Debug.Log("Player has die"); return; } if (posType == PosType.Basic) { if (isPress) { anim.SetTrigger("Attack"); } } else { anim.SetBool("Skill" + (int)posType, isPress); } //判断是否组队,如果是就发送请求到服务器 if (TeamInviteController.Instance.isTeam) { PlayerAnimationModel model = new PlayerAnimationModel() { attack = (posType == PosType.Basic && isPress) ? true : false, skill1 = (posType == PosType.One && isPress) ? true : false, skill2 = (posType == PosType.Two && isPress) ? true : false, skill3 = (posType == PosType.Three && isPress) ? true : false, }; BattleController.Instance.SyncPlayerAttackAnimationRequest(model, PhotonEngine.Instance.role.ID); } }
void TakeDamageByEnemy(int damage) { if (hp <= 0) { Dead(); return; } hp -= damage; //播放受伤动画 PlayerBarInTranscript._instance.Show(hp); int randomNum = Random.Range(0, 100); if (randomNum < damage) { anim.SetTrigger("takedamage"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { takedamage = true }; battleController.SyncPlayerAnimation(model); } } //显示血量减少 hudText.GetComponent <HUDText>().Add("-" + damage, Color.red, 0.2f); BloodScene._instance.showBloodScene(); }
public void SyncAnimation(PlayerAnimationModel model) { if (model.skillBasic) { anim.SetTrigger("SkillBasic"); } else if (model.skillOne) { anim.SetTrigger("SkillOne"); } else if (model.skillTwo) { anim.SetTrigger("SkillTwo"); } else if (model.skillThree) { anim.SetTrigger("SkillThree"); } else if (model.takeDamage) { anim.SetTrigger("TakeDamage"); } else if (model.die) { anim.SetTrigger("Die"); } }
public override void OnEvent(EventData eventData) { SubCode subCode = ParameterTool.GetSubcode(eventData.Parameters); switch (subCode) { case SubCode.GetTeam: List <Role> roles = ParameterTool.GetParameter <List <Role> >(eventData.Parameters, ParameterCode.RoleList); int masterRoleID = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.MasterRoleID, false); if (OnGetTeam != null) { OnGetTeam(roles, masterRoleID); } break; case SubCode.SyncPositionAndRotation: int roleID = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false); Vector3 pos = ParameterTool.GetParameter <Vector3Obj>(eventData.Parameters, ParameterCode.Position).ToVector3(); Vector3 eulerAngles = ParameterTool.GetParameter <Vector3Obj>(eventData.Parameters, ParameterCode.EulerAngles).ToVector3(); if (OnSyncPositionAndRotation != null) { OnSyncPositionAndRotation(roleID, pos, eulerAngles); } break; case SubCode.SyncMoveAnimation: int roleID2 = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false); PlayerMoveAnimationModel model = ParameterTool.GetParameter <PlayerMoveAnimationModel>(eventData.Parameters, ParameterCode.PlayerMoveAnimationModel); if (OnSyncMoveAnimation != null) { OnSyncMoveAnimation(roleID2, model); } break; case SubCode.SyncAnimation: int roleID3 = ParameterTool.GetParameter <int>(eventData.Parameters, ParameterCode.RoleID, false); PlayerAnimationModel model2 = ParameterTool.GetParameter <PlayerAnimationModel>(eventData.Parameters, ParameterCode.PlayerAnimationModel); if (OnSyncPlayerAnimation != null) { OnSyncPlayerAnimation(roleID3, model2); } break; case SubCode.SendGameState: GameStateModel model3 = ParameterTool.GetParameter <GameStateModel>(eventData.Parameters, ParameterCode.GameStateModel); if (OnGameStateChange != null) { OnGameStateChange(model3); } break; } }
public void SyncPlayerAnimation(PlayerAnimationModel model) //发送同步动画状态请求 { Dictionary <byte, object> parameters = new Dictionary <byte, object>(); ParameterTool.AddParameter(parameters, ParameterCode.PlayerAnim, model); PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncAnimation, parameters); }
public void SetAttackAnim(int roleid, PlayerAnimationModel model) { if (anim == null) { return; } if (model.attack) { anim.SetTrigger("Attack"); return; } //为了解决服务器过快发送停止播放动画请求,导致动画还没开始播放就停止 if (!model.skill1)//停止skill1动画 { //通过Coroutin延迟执行"停止播放动画" StartCoroutine("StopAnimation"); } else { anim.SetBool("Skill1", model.skill1); } if (!model.skill2) { StartCoroutine("StopAnimation"); } else { anim.SetBool("Skill2", model.skill2); } if (!model.skill3) { StartCoroutine("StopAnimation"); } else { anim.SetBool("Skill3", model.skill3); } //玩家被攻击动画播放 bool isHurtAnim = model.takeDamage; int hurtNum = model.hurtNum; if (hurtNum > 0) { if (isHurtAnim) { anim.SetTrigger("GetHurt"); } PlayerAttack playerAttack = this.GetComponent <PlayerAttack>(); playerAttack.ShowHurtNum(hurtNum);//1.显示伤害数字 //2.被攻击对象所属客户端才会显示受伤红屏效果 if (roleid == PhotonEngine.Instance.role.ID) { BloodScreen.Instance.ShowBloodScreen(); } } }
public void OnAttacButtonClick(bool isPress, PosType posType) { if (playerAttack.hp < 0) { return; } anim.SetTrigger("Skill" + posType); //发起动画同步的申请 if (isSyncPlayerAnimation) { if (isPress) { switch ((int)posType) { case 0: PlayerAnimationModel model0 = new PlayerAnimationModel() { skillBasic = true }; battleController.SyncPlayerAnimation(model0); break; case 1: PlayerAnimationModel model1 = new PlayerAnimationModel() { skillOne = true }; battleController.SyncPlayerAnimation(model1); break; case 2: battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skillTwo = true }); break; case 3: battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skillThree = true }); break; } } else { PlayerAnimationModel model = new PlayerAnimationModel(); battleController.SyncPlayerAnimation(model); } } }
private void OnSyncPlayerAnimation(int roleID, PlayerAnimationModel model) { GameObject go = null; if (playerDict.TryGetValue(roleID, out go)) { go.GetComponent <PlayerAnimationControll>().SetAnimation(model); } else { Debug.LogWarning("Don't find a player gameobject"); } }
void Dead() { anim.SetBool("die", true); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; battleController.SyncPlayerAnimation(model); } this.GetComponent <PlayerMove01>().enabled = false; }
public void SetAnimation(PlayerAnimationModel model) { if (model.attack) { anim.SetTrigger("Attack"); } else if (model.takedamage) { anim.SetTrigger("takedamage"); } anim.SetBool("skill1", model.skill1); anim.SetBool("skill2", model.skill2); anim.SetBool("skill3", model.skill3); }
void Dead() { GameOver.instance.OnPlayerDie(PhotonEngine.Instance.role.Id); isDead = true; anim.SetTrigger("Die"); if (isSyncAnim) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; fightController.SyncPlayerAnimation(model); } MessageManager.instance.ShowMessage("哈哈哈,你逃不出我的魔掌的!!!", 2f); }
//同步玩家攻击动画请求 public void SyncPlayerAttackAnimationRequest(PlayerAnimationModel model, int roleId, int damage = 0) { //向服务器发起请求 Dictionary <byte, object> parameters = new Dictionary <byte, object>(); parameters.Add((byte)ParameterCode.RoleId, roleId); parameters.Add((byte)ParameterCode.MasterRoleID, PhotonEngine.Instance.masterid); parameters.Add((byte)ParameterCode.MemberIndex, PhotonEngine.Instance.memeberindex); parameters.Add((byte)ParameterCode.ChannelID, PhotonEngine.Instance.ChannelId); parameters.Add((byte)ParameterCode.SubCode, SubCode.SyncPlayerAttackAnimation); string json = JsonMapper.ToJson(model); parameters.Add((byte)ParameterCode.PlayerAnimationModel, json); parameters.Add((byte)ParameterCode.Damage, damage); PhotonEngine.Instance.SendRequest(OperationCode.Battle, parameters); }
//怪物对玩家造成伤害 public void GetHurt(string args) { string[] strArr = args.Split(','); int hurtNum = int.Parse(strArr[0]); bool hurtFlag = false; //血量减少 hp -= hurtNum; if (hp <= 0) { Dead(); hp = 0; } ShowHurtNum(hurtNum);//1.显示伤害数字 if (this.GetComponent <PlayerTransMove>().roleid == PhotonEngine.Instance.role.ID) { //2.被攻击对象所属客户端才会显示受伤红屏效果 BloodScreen.Instance.ShowBloodScreen(); //3.修改血条的值 UpdatePlayerHpBar(hp); } int rank = UnityEngine.Random.Range(0, 100); if (rank < hurtNum) { //播放受伤动画 hurtFlag = true; anim.SetTrigger("GetHurt"); } if (TeamInviteController.Instance.isTeam) { int targetId = this.GetComponent <PlayerTransMove>().roleid; //如果是组队,发送请求到服务器,同步玩家受伤动画 PlayerAnimationModel model = new PlayerAnimationModel() { takeDamage = hurtFlag, hurtNum = hurtNum, //怪物对玩家造成的伤害 }; //同步玩家受伤动画 BattleController.Instance.SyncPlayerAttackAnimationRequest(model, targetId); //同步玩家血条 BattleController.Instance.SyncPlayerHpBarRequest(hp, hurtNum, targetId); } }
void TakeDamage(int damage) { if (this.hp <= 0) { return; } this.hp -= damage; if (OnPlayerHpChange != null) { OnPlayerHpChange(hp); } //1.播放受到攻击的动画 int random = Random.Range(0, 100); if (random < damage) { anim.SetTrigger("TakeDamage"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { takeDamage = true }; battleController.SyncPlayerAnimation(model); } } //2.显示血量的减少 hudText.NewText("- " + damage.ToString(), hpbarPoint.transform, Color.magenta, 30, 0.1f, -1f, 1f, bl_Guidance.LeftUp); //3.屏幕上血红特效的显示 //4.死亡 if (this.hp <= 0) { anim.SetTrigger("Die"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; battleController.SyncPlayerAnimation(model); } hp = 0; GameController.Instance.OnPlayerDie(GetComponent <Player>().roleId); } }
public override void OnEvent(EventData eventData) { SubCode subcode = ParameterTool.GetParameters <SubCode>(eventData.Parameters, ParameterCode.SubCode, false); switch (subcode) { case SubCode.GetTeam: List <Role> list = ParameterTool.GetParameters <List <Role> >(eventData.Parameters, ParameterCode.RoleList); int masterRoleID = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.MasterRoleID, false); //组队成功 if (OnGetTeam != null) { OnGetTeam(list, masterRoleID); } break; case SubCode.AsyncPostionAndEularAngler: int roleid = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false); Vector3 pos = ParameterTool.GetParameters <Vector3Obj>(eventData.Parameters, ParameterCode.Postion).ToVector3(); Vector3 eularAnglers = ParameterTool.GetParameters <Vector3Obj>(eventData.Parameters, ParameterCode.EulerAnglers).ToVector3(); if (OnAsyncPostionAndRotation != null) { OnAsyncPostionAndRotation(roleid, pos, eularAnglers); } break; case SubCode.AsyncPlayerMoveAnimation: int roleid2 = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false); PlayerMoveAnimationModel model = ParameterTool.GetParameters <PlayerMoveAnimationModel>(eventData.Parameters, ParameterCode.PlayerMoveAnimationModel); if (OnAsyncPlayerMoveAnimation != null) { OnAsyncPlayerMoveAnimation(roleid2, model); } break; case SubCode.SyncPlayerAnimation: int roleid3 = ParameterTool.GetParameters <int>(eventData.Parameters, ParameterCode.RoleID, false); PlayerAnimationModel animationModel = ParameterTool.GetParameters <PlayerAnimationModel>(eventData.Parameters, ParameterCode.PlayerAnimationModel); if (OnSyncPlayerAnimation != null) { OnSyncPlayerAnimation(roleid3, animationModel); } break; } }
void TakeDamage(int damage) { if (this.hp <= 0) { return; } this.hp -= damage; if (OnPlayerHpChange != null) { OnPlayerHpChange(hp); } //播放受到攻击的动画 int random = Random.Range(0, 100); if (random < damage) { anim.SetTrigger("TakeDamage"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { takeDamage = true }; battleController.SyncPlayerAnimation(model); } } //显示血量的减少 hudText.Add("-" + damage, Color.red, 0.3f); //屏幕上血红特效的显示 BloodScreen.Instance.Show(); if (hp <= 0) { hp = 0; anim.SetTrigger("Die"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; battleController.SyncPlayerAnimation(model); } GameController.Instance.OnPlayerDie(GetComponent <Player>().roleID); } }
public void OnSyncPlayerAnimation(int roleID, PlayerAnimationModel model) { GameObject go = null; bool isHave = playerDict.TryGetValue(roleID, out go); if (isHave) { go.GetComponent <PlayerAnimation>().SyncAnimation(model); if (model.die) { OnPlayerDie(roleID); } } else { Debug.LogWarning("未找到对应的角色游戏物体进行更新移动动画状态"); } }
public void OnSyncPlayerAnimation(int roleId, PlayerAnimationModel model) { GameObject go = null; bool isHave = playerDict.TryGetValue(roleId, out go); if (isHave) { go.GetComponent <PlayerAnimation2>().SyncPlayerAnimation(model); if (model.die) { GameOver.instance.OnPlayerDie(roleId); } } else { Debug.Log("Failed : SyncPlayerAnimation"); } }
public void SyncAnimation(PlayerAnimationModel model) { if (model.attack) { anim.SetTrigger("Attack"); } else if (model.die) { anim.SetTrigger("Die"); } else if (model.takeDamage) { anim.SetTrigger("TakeDamage"); } anim.SetBool("Skill1", model.skill1); anim.SetBool("Skill2", model.skill2); anim.SetBool("Skill3", model.skill3); }
//同步玩家攻击,受伤动画处理 public void SyncPlayerAttackAnimationResponse(int roleid, PlayerAnimationModel model) { Debug.Log("SyncPlayerAttackAnimationResponse roleid=" + roleid); Dictionary <int, GameObject> playerDict = PlayerController.Instance.transPlayerDict; //根据roleid找到对应prefab,更新其位置 GameObject playerGo = null; playerDict.TryGetValue(roleid, out playerGo); if (playerGo != null) { playerGo.GetComponent <PlayerTransMove>().SetAttackAnim(roleid, model); } else { Debug.LogWarning("未找到要同步动画的玩家.."); } }
public void SyncAnimation(PlayerAnimationModel model) { if (model.attack) { anim.SetTrigger("Attack"); }else if (model.die) { anim.SetTrigger("Die"); }else if (model.takeDamage) { anim.SetTrigger("TakeDamage"); } anim.SetBool("Skill1",model.skill1); anim.SetBool("Skill2",model.skill2); anim.SetBool("Skill3",model.skill3); }
public override void OnEventData(EventData data) { SubCode subCode = ParameterTool.GetSubCode(data.Parameters); switch (subCode) { case SubCode.ConfirmTeam: //Debug.Log("SubCode.ConfimTeam"); List <Role> roleList = ParameterTool.GetParameter <List <Role> >(data.Parameters, ParameterCode.RoleList); int masterRoleId = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.MasterRoleId, false); OnHavingTeam(roleList, masterRoleId); break; case SubCode.SyncPositionAndRotation: //Debug.Log("SubCode.SyncPlayer"); int roleId = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false); Vector3 position = ParameterTool.GetParameter <Vector3Object>(data.Parameters, ParameterCode.Position).ToVector3(); Vector3 eulerAngles = ParameterTool.GetParameter <Vector3Object>(data.Parameters, ParameterCode.EulerAngles).ToVector3(); OnSyncPositionAndRotation(roleId, position, eulerAngles); break; case SubCode.SyncMoveAnimation: //Debug.Log("SubCode.SyncMoveAnimation"); int roleId2 = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false); PlayerMoveAnimationModel model2 = ParameterTool.GetParameter <PlayerMoveAnimationModel>(data.Parameters, ParameterCode.MoveAnimation); OnSyncMoveAnimation(roleId2, model2); break; case SubCode.SyncAnimation: //Debug.Log("SubCode.SyncAnimation"); int roleId3 = ParameterTool.GetParameter <int>(data.Parameters, ParameterCode.RoleId, false); PlayerAnimationModel model3 = ParameterTool.GetParameter <PlayerAnimationModel>(data.Parameters, ParameterCode.PlayerAnim); OnSyncPlayerAnimation(roleId3, model3); break; case SubCode.SyncGameState: //Debug.Log("SubCode.SyncGameState"); GameStateModel model4 = ParameterTool.GetParameter <GameStateModel>(data.Parameters, ParameterCode.GameState); OnSyncGameState(model4); break; } }
void TakeDamage(int damage) //受到伤害 { if (hp_now == 0) { return; } hp_now -= damage; if (hp_now < 0) { hp_now = 0; } if (hp_now == 0) //死亡 { Dead(); } if (OnPlayerHpChange != null) { OnPlayerHpChange(hp_now); //更新血条显示 } //受到伤害的动画,有一定的概率触发,伤害越大,概率越大 int random = Random.Range(0, 99); //伤害超过100一定触发动画 if (random < damage) { MessageManager.instance.ShowMessage("啊啊啊~~~", 0.5f); anim.SetTrigger("TakeDamage"); if (isSyncAnim) { PlayerAnimationModel model = new PlayerAnimationModel() { takedamage = true }; fightController.SyncPlayerAnimation(model); } } hudText.Add("-" + damage, Color.red, 0.1f); //更新伤害显示 BloodScreen.instance.Show(); //屏幕变红 }
public void OnAttackButtonClick(bool isPress, PosType posType) { if (posType == PosType.Basic) { if (isPress) { anim.SetTrigger("Attack"); if (isSyncPlayerAnimation) { battleController.SyncPlayerAnimation(new PlayerAnimationModel() { attack = true }); } } } else { switch (posType) { case PosType.One: if (isPress) { anim.SetBool("skill1", true); if (isSyncPlayerAnimation) { battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skill1 = true }); } } else { anim.SetBool("skill1", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { }; battleController.SyncPlayerAnimation(model); } } break; case PosType.Two: if (isPress) { anim.SetBool("skill2", true); if (isSyncPlayerAnimation) { battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skill2 = true }); } } else { anim.SetBool("skill2", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { }; battleController.SyncPlayerAnimation(model); } } break; case PosType.Three: if (isPress) { anim.SetBool("skill3", true); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { skill3 = true }; battleController.SyncPlayerAnimation(model); } } else { anim.SetBool("skill3", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { }; battleController.SyncPlayerAnimation(model); } } break; } } }
public void OnSyncPlayerAnimation(int roleID,PlayerAnimationModel model) { GameObject go = null; bool isHave = playerDict.TryGetValue(roleID, out go); if (isHave) { //同步动作 go.GetComponent<PlayerAnimation>().SyncAnimation(model); //其他角色死亡 if (model.die) { OnPlayerDie(roleID); } } else { Debug.LogWarning("未找到对应的角色游戏物体进行更新移动动画状态"); } }
public void OnAttackButtonClick(bool isPress,PosType posType) { if (posType == PosType.Basic) { if (isPress) { anim.SetTrigger("Attack"); if(isSyncPlayerAnimation) battleController.SyncPlayerAnimation(new PlayerAnimationModel() { attack = true }); } } else { switch (posType) { case PosType.One: if (isPress){ anim.SetBool("skill1", true); if (isSyncPlayerAnimation) { battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skill1 = true }); } } else { anim.SetBool("skill1", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() {}; battleController.SyncPlayerAnimation(model); } } break; case PosType.Two: if (isPress){ anim.SetBool("skill2", true); if (isSyncPlayerAnimation) { battleController.SyncPlayerAnimation(new PlayerAnimationModel() { skill2 = true }); } } else { anim.SetBool("skill2", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() {}; battleController.SyncPlayerAnimation(model); } } break; case PosType.Three: if (isPress) { anim.SetBool("skill3", true); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { skill3 = true }; battleController.SyncPlayerAnimation(model); } } else { anim.SetBool("skill3", false); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { }; battleController.SyncPlayerAnimation(model); } } break; } } }
public void SyncPlayerAnimation(PlayerAnimationModel model) { Dictionary<byte,object> parameters=new Dictionary<byte,object>(); ParameterTool.AddParameters<PlayerAnimationModel>(parameters, ParameterCode.PlayerAnimationModel,model); PhotonEngine.Instance.SendRequest(opCode, SubCode.SyncPlayerAnimation, parameters); }
void TakeDamage(int damage) { if(this.hp <= 0) return; this.hp -= damage; if(OnPlayerHpChange != null) OnPlayerHpChange(hp); //播放受到攻击的动画 int random = Random.Range(0,100); if(random < damage) { anim.SetTrigger("TakeDamage"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel(){ takeDamage = true}; battleController.SyncPlayerAnimation(model); } } //显示血量的减少 hudText.Add( "-" + damage,Color.red,1f); //屏幕上血红特效的显示 BloodScreen.Instance.Show(); if (hp <= 0) { hp = 0; anim.SetTrigger("Die"); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; battleController.SyncPlayerAnimation(model); } GameController.Instance.OnPlayerDie(GetComponent<Player>().roleID); } }
public override void OnEvent(EventData eventData) { int roleId = -1; //获取SubCode,判断是增加还是删除角色 SubCode subCode; object o = null; eventData.Parameters.TryGetValue((byte)ParameterCode.SubCode, out o); subCode = (SubCode)o; eventData.Parameters.TryGetValue((byte)ParameterCode.RoleId, out o); roleId = (int)o; switch (subCode) { case SubCode.SyncPosAndRotation: //同步角色位置和旋转 object posObj = null; object rotObj = null; eventData.Parameters.TryGetValue((byte)ParameterCode.Position, out posObj); eventData.Parameters.TryGetValue((byte)ParameterCode.EulerAngles, out rotObj); Vector3Obj pos = JsonMapper.ToObject <Vector3Obj>(posObj.ToString()); Vector3Obj rotation = JsonMapper.ToObject <Vector3Obj>(rotObj.ToString()); SyncTransPosAndRotationResponse(roleId, pos.ToVector3(), rotation.ToVector3()); break; case SubCode.SyncPlayerMoveAnimation: //同步角色移动动画 PlayerMoveAnimationModel model = new PlayerMoveAnimationModel(); eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerMoveAnimationModel, out o); model = JsonMapper.ToObject <PlayerMoveAnimationModel>(o.ToString()); SyncPlayerMoveAnimationResponse(roleId, model); break; case SubCode.SyncPlayerAttackAnimation: //同步角色攻击动画 PlayerAnimationModel playerAnimationModel = new PlayerAnimationModel(); eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerAnimationModel, out o); playerAnimationModel = JsonMapper.ToObject <PlayerAnimationModel>(o.ToString()); SyncPlayerAttackAnimationResponse(roleId, playerAnimationModel); break; case SubCode.SyncEnermySpawn: SyncEnermySpawnResponse(); break; case SubCode.BackToHome: BackToHomeResponse(); break; case SubCode.FightAgain: FightAgainResponse(); break; case SubCode.SyncPlayerHpBar: int hp = 0; int hurtNum = 0; int targetId = 0; eventData.Parameters.TryGetValue((byte)ParameterCode.PlayerHp, out o); hp = (int)o; eventData.Parameters.TryGetValue((byte)ParameterCode.EnermyHurtNum, out o); hurtNum = (int)o; eventData.Parameters.TryGetValue((byte)ParameterCode.TargetId, out o); targetId = (int)o; SyncPlayerHpBarResponse(hp, hurtNum, targetId); break; default: break; } }
void TakeDamageByEnemy(int damage) { if (hp <= 0) { Dead(); return; } hp -= damage; //播放受伤动画 PlayerBarInTranscript._instance.Show(hp); int randomNum = Random.Range(0, 100); if(randomNum<damage) { anim.SetTrigger("takedamage"); if(isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { takedamage = true }; battleController.SyncPlayerAnimation(model); } } //显示血量减少 hudText.GetComponent<HUDText>().Add("-" + damage, Color.red, 0.2f); BloodScene._instance.showBloodScene(); }
void Dead() { anim.SetBool("die", true); if (isSyncPlayerAnimation) { PlayerAnimationModel model = new PlayerAnimationModel() { die = true }; battleController.SyncPlayerAnimation(model); } this.GetComponent<PlayerMove01>().enabled = false; }
private void OnSyncPlayerAnimation(int roleID, PlayerAnimationModel model) { GameObject go = null; if (playerDict.TryGetValue(roleID, out go)) { go.GetComponent<PlayerAnimationControll>().SetAnimation(model); } else { Debug.LogWarning("Don't find a player gameobject"); } }
public void OnAttackBtnClick(bool isPress, PosType posType) { if (playerAttack.isDead == true) //死亡后不允许移动 { return; } if (posType == PosType.Basic) //基础攻击 { if (isPress) //按钮触发攻击 { anim.SetTrigger("Attack"); if (isSyncAnim) { PlayerAnimationModel model = new PlayerAnimationModel() { attack = true }; fightController.SyncPlayerAnimation(model); } } } else { anim.SetBool("Skill0" + (int)posType, isPress); //if (isPress) //{ // anim.SetBool("Skill0" + (int)posType, true); //} //else //{ // anim.SetBool("Skill0" + (int)posType, false); //} if (isSyncAnim) { if (isPress) { switch ((int)posType) { case 1: PlayerAnimationModel model1 = new PlayerAnimationModel() { skill1 = true }; fightController.SyncPlayerAnimation(model1); break; case 2: PlayerAnimationModel model2 = new PlayerAnimationModel() { skill2 = true }; fightController.SyncPlayerAnimation(model2); break; case 3: PlayerAnimationModel model3 = new PlayerAnimationModel() { skill3 = true }; fightController.SyncPlayerAnimation(model3); break; } } else { fightController.SyncPlayerAnimation(new PlayerAnimationModel()); } } } }