예제 #1
0
    //同步敌人
    public void SyncEnemyPosition(EnemyPositionModel model)
    {
        Dictionary <byte, object> parameters = new Dictionary <byte, object>();

        ParameterTool.AddParmeter(parameters, ParameterCode.EnemyPositionModel, model);
        PhotonEngine.Instance.SendRequest(OpCode, SubCode.SyncPositionAndRotation, parameters);
    }
예제 #2
0
 void SyncEnemyPositionAndRotation()
 {
     if (enemyToSyncList != null && enemyToSyncList.Count > 0)
     {
         EnemyPositionModel model = new EnemyPositionModel();
         foreach (Enemy enemy in enemyToSyncList)
         {
             if (enemy != null)
             {
                 EnemyPositionProperty property = new EnemyPositionProperty()
                 {
                     guid        = enemy.guid,
                     position    = new Vector3Obj(enemy.transform.position),
                     eulerAngles = new Vector3Obj(enemy.transform.eulerAngles),
                 };
                 model.list.Add(property);
             }
         }
         if (bossToSync != null)
         {
             EnemyPositionProperty property = new EnemyPositionProperty()
             {
                 guid        = bossToSync.guid,
                 position    = new Vector3Obj(bossToSync.transform.position),
                 eulerAngles = new Vector3Obj(bossToSync.transform.eulerAngles),
             };
             model.list.Add(property);
         }
         bossToSync = null;
         enemyController.SyncEnemyPosition(model);
         enemyToSyncList.Clear();
     }
 }
    public void SyncEnemyPosition()
    {
        if (syncEnemyList != null || syncBoss != null)
        {
            EnemyPositionModel model = new EnemyPositionModel();
            foreach (Enemy enemy in syncEnemyList)
            {
                if (enemy != null)  //同步期间敌人可能被杀死而出现空指针
                {
                    EnemyPositionProperty property = new EnemyPositionProperty {
                        guid = enemy.guid, position = new Vector3Object(enemy.transform.position), eulerAngles = new Vector3Object(enemy.transform.eulerAngles)
                    };
                    model.list.Add(property);
                }
            }
            if (syncBoss != null)
            {
                EnemyPositionProperty property = new EnemyPositionProperty {
                    guid = syncBoss.guid, position = new Vector3Object(syncBoss.transform.position), eulerAngles = new Vector3Object(syncBoss.transform.eulerAngles)
                };
                model.list.Add(property);
            }

            enemyController.SyncEnemyPosition(model);
            syncEnemyList.Clear();
            syncBoss = null;
        }
    }
    public override void OnEventData(EventData data)
    {
        SubCode subCode = ParameterTool.GetSubCode(data.Parameters);

        switch (subCode)
        {
        case SubCode.SyncEnemyCreat:
            //Debug.Log("SubCode.CreatEnemy");
            EnemyCreatModel model = ParameterTool.GetParameter <EnemyCreatModel>(data.Parameters, ParameterCode.CreatEnemy);
            OnSyncEnemyCreat(model);
            break;

        case SubCode.SyncPositionAndRotation:
            //Debug.Log("SubCode.SyncPositionAndRotation");
            EnemyPositionModel model2 = ParameterTool.GetParameter <EnemyPositionModel>(data.Parameters, ParameterCode.EnemyPosition);
            OnSyncEnemyPosition(model2);
            break;

        case SubCode.SyncEnemyAnim:
            //Debug.Log("SubCode.SyncPositionAndRotation");
            EnemyAnimModel model3 = ParameterTool.GetParameter <EnemyAnimModel>(data.Parameters, ParameterCode.EnemyAnim);
            OnSyncEnemyAnim(model3);
            break;
        }
    }
예제 #5
0
    public override void OnEvent(EventData eventData)
    {
        SubCode subcode = ParameterTool.GetSubcode(eventData.Parameters);

        switch (subcode)
        {
        case SubCode.CreateEnemy:
            CreateEnemyModel model = ParameterTool.GetParameter <CreateEnemyModel>(eventData.Parameters,
                                                                                   ParameterCode.CreateEnemyModel);
            if (OnCreateEnemy != null)
            {
                OnCreateEnemy(model);
            }
            break;

        case SubCode.SyncPositionAndRotation:
            EnemyPositionModel model1 = ParameterTool.GetParameter <EnemyPositionModel>(eventData.Parameters,
                                                                                        ParameterCode.EnemyPositionModel);
            if (OnSyncEnemyPositionAndRotation != null)
            {
                OnSyncEnemyPositionAndRotation(model1);
            }
            break;

        case SubCode.SyncAnimation:
            EnemyAnimationModel model2 = ParameterTool.GetParameter <EnemyAnimationModel>(eventData.Parameters,
                                                                                          ParameterCode.EnemyAnimationModel);
            if (OnSyncEnemyAnimation != null)
            {
                OnSyncEnemyAnimation(model2);
            }
            break;
        }
    }
예제 #6
0
 void OnSyncEnemyPositionAndRotation(EnemyPositionModel model)
 {
     foreach (EnemyPositionProperty property in model.list)
     {
         GameObject enemyGo;
         bool       isGet = enemyDict.TryGetValue(property.guid, out enemyGo);
         if (isGet)
         {
             enemyGo.transform.position    = property.position.ToVector3();
             enemyGo.transform.eulerAngles = property.eulerAngles.ToVector3();
         }
     }
 }
 public void OnSyncEnemyPosition(EnemyPositionModel model)
 {
     foreach (EnemyPositionProperty property in model.list)
     {
         GameObject go;
         bool       isSuccess = enemyDict.TryGetValue(property.guid, out go);
         if (isSuccess)
         {
             go.transform.position    = property.position.ToVector3();
             go.transform.eulerAngles = property.eulerAngles.ToVector3();
         }
     }
 }
예제 #8
0
 //同步敌人位置和旋转
 public void SyncEnemyPosition(EnemyPositionModel model)
 {
     Dictionary<byte,object> parameters = new Dictionary<byte, object>();
     ParameterTool.AddParameter(parameters,ParameterCode.EnemyPositionModel, model);
     PhotonEngine.Instance.SendRequest(OpCode,SubCode.SyncPositionAndRotation,parameters);
 }
예제 #9
0
 private void OnSyncEnemyPositionAndRotation(EnemyPositionModel model)
 {
     foreach (EnemyPositionProperty property in model.list)
     {
         GameObject enemyGo;
         bool isGet = enemyDict.TryGetValue(property.guid, out enemyGo);
         if (isGet)
         {
             enemyGo.transform.position = property.position.ToVector3();
             enemyGo.transform.eulerAngles = property.eulerAngles.ToVector3();
         }
     }
 }
예제 #10
0
    //发起同步敌人位置和旋转的请求
    private void SyncEnemyPositionAndRotation()
    {
        if (enemyToSyncList != null && enemyToSyncList.Count > 0)
        {
            EnemyPositionModel model = new EnemyPositionModel();
            foreach (Enemy enemy in enemyToSyncList)
            {
                if (enemy != null)
                {

                    EnemyPositionProperty property = new EnemyPositionProperty()
                    {
                        guid = enemy.guid,
                        position = new Vector3Obj(enemy.transform.position),
                        eulerAngles = new Vector3Obj(enemy.transform.eulerAngles)
                    };
                    model.list.Add(property);
                }
            }

            if (bossToSync != null)
            {
                EnemyPositionProperty property = new EnemyPositionProperty()
                {
                    guid = bossToSync.guid,
                    position = new Vector3Obj(bossToSync.transform.position),
                    eulerAngles = new Vector3Obj(bossToSync.transform.eulerAngles)
                };
                model.list.Add(property);
            }
            bossToSync = null;
            enemyController.SyncEnemyPosition(model);
            enemyToSyncList.Clear();
        }
    }