/// <summary> /// 根据登陆信息初始化自己以及场上的其他角色 /// </summary> public void initUnits() { m_runTime = SFBattleData.instance.enterBattle_initRunTime; SFUtils.log("初始化角色..."); // 自己 SFUnitConf heroConf = new SFUnitConf(); heroConf.uid = SFUserData.instance.uid; heroConf.posX = SFBattleData.instance.enterBattle_posX; heroConf.posY = SFBattleData.instance.enterBattle_posY; heroConf.rotation = SFBattleData.instance.enterBattle_rotation; heroConf.speedX = 0; heroConf.speedY = 0; heroConf.life = SFBattleData.instance.enterBattle_maxLife; heroConf.maxLife = SFBattleData.instance.enterBattle_maxLife; m_heroController.setHero(addUnit(heroConf)); // 其他角色 var users = SFBattleData.instance.enterBattle_remoteUsers; foreach (var item in users) { SFUnitConf conf = new SFUnitConf(); conf.uid = item.uid; conf.posX = item.posX; conf.posY = item.posY; conf.rotation = item.rotation; conf.speedX = item.speedX; conf.speedY = item.speedY; conf.life = item.life; conf.maxLife = item.maxLife; addUnit(conf); } SFUtils.log("初始化角色完成"); }
public void init(SFUnitConf conf) { uid = conf.uid; // 初始化坐标 m_curPosX = conf.posX; m_curPosY = conf.posY; m_curRotation = conf.rotation; m_curSpeedX = conf.speedX; m_curSpeedY = conf.speedY; m_curLife = conf.life; m_maxLife = conf.maxLife; transform.position = new Vector3(m_curPosX, 0, m_curPosY); transform.rotation = Quaternion.Euler(0, m_curRotation, 0); }
void onNotifyUnitJoin(SFEvent e) { var data = e.data as SFResponseMsgNotifyNewUserJoin; if (data.inOrOut) { SFUnitConf conf = new SFUnitConf(); conf.uid = data.uid; conf.posX = data.posX; conf.posY = data.posY; conf.rotation = data.rotaion; conf.life = data.life; conf.maxLife = data.maxLife; addUnit(conf); } else { removeUnit(data.uid); } }
/// <summary> /// 根据指定配置信息添加角色到场景 /// </summary> /// <returns>角色controller</returns> /// <param name="conf">配置信息</param> public SFUnitController addUnit(SFUnitConf conf) { if (m_controllers.ContainsKey(conf.uid)) { SFUtils.logWarning("已经存在的UID: {0}", conf.uid); return(null); } if (unitPrefab != null) { var controllerGO = GameObject.Instantiate(unitPrefab, gameObject.transform.parent); var controller = controllerGO.GetComponent <SFUnitController>(); controller.init(conf); m_controllers.Add(conf.uid, controller); var eventData = new SFUnitAddRemove(); eventData.uid = conf.uid; eventData.addOrRemove = true; eventData.curLife = conf.life; eventData.maxLife = conf.maxLife; SFBattleData.instance.dispatcher.dispatchEvent(SFEvent.EVENT_UNIT_ADD_REMOVE, eventData); return(controller); } return(null); }