Beispiel #1
0
    /// <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);
    }
Beispiel #3
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);
        }
    }
Beispiel #4
0
 /// <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);
 }