Exemple #1
0
    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);
        }
    }
Exemple #2
0
    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");
     }
 }
Exemple #4
0
    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);
    }
Exemple #6
0
    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);
            }
        }
    }
Exemple #8
0
    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");
        }
    }
Exemple #9
0
 void Dead()
 {
     anim.SetBool("die", true);
     if (isSyncPlayerAnimation)
     {
         PlayerAnimationModel model = new PlayerAnimationModel()
         {
             die = true
         };
         battleController.SyncPlayerAnimation(model);
     }
     this.GetComponent <PlayerMove01>().enabled = false;
 }
Exemple #10
0
 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);
 }
Exemple #12
0
    //同步玩家攻击动画请求
    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);
    }
Exemple #13
0
    //怪物对玩家造成伤害
    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);
        }
    }
Exemple #14
0
    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);
        }
    }
Exemple #15
0
    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;
        }
    }
Exemple #16
0
    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);
        }
    }
Exemple #17
0
    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");
        }
    }
Exemple #19
0
 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);
 }
Exemple #20
0
    //同步玩家攻击,受伤动画处理
    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("未找到要同步动画的玩家..");
        }
    }
Exemple #21
0
    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();                //屏幕变红
    }
Exemple #24
0
    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;
            }
        }
    }
Exemple #25
0
 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 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);
 }
	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);
 }
Exemple #29
0
	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);
	    }

	}
Exemple #30
0
    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;
 }
Exemple #33
0
 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");
     }
 }
Exemple #34
0
    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());
                }
            }
        }
    }