コード例 #1
0
 /// <summary>
 /// Unit类初始化(该方法由GameCtrl.UnitBirth()方法或Gamef.UnitBirth()调用)
 /// </summary>
 public void Init(Unit unit)
 {
     if (isInit)
     {
         return;
     }
     isInit = true;
     //读取单位数据并赋初值
     this.unit                        = unit;
     name                             = unit.unitName;
     data                             = Gamef.LoadUnitData(name);
     OriginalMaxV                     = data.MaxVelocity;
     OriginalMaxTurningV              = data.MaxTurningVelocity;
     OriginalMaxSP                    = data.MaxSheildPoint;
     MaxManaPoint.OriginalValue       = data.MaxManaPoint;
     ManaPoint.OriginalValue          = data.MaxManaPoint;
     MPRegenerationRate.OriginalValue = data.ManaPointRegenerationRate;
     SPRegenerationRate.OriginalValue = data.ShieldPointRegenerationRate;
     //初始化速度
     maxV_current = OriginalMaxV;
     Acceleration = maxV_current * GameDB.DAMPED_CONST;
     //初始化转向速度
     maxTurningV_current = OriginalMaxTurningV;
     AngularAcceleration = maxTurningV_current * GameDB.ANGULAR_DAMPED_CONST;
     //初始化护盾
     maxShieldPoint_current = OriginalMaxSP;
     sheildPoint_current    = OriginalMaxSP;
     SPRegenerationRate.Init(this);
     //初始化魔法值
     ManaPoint.setValueHandler    = ClampMP;
     MaxManaPoint.setValueHandler = SetMP;
     MaxManaPoint.Init(this);
     ManaPoint.Init(this);
     MPRegenerationRate.Init(this);
 }
コード例 #2
0
        //UnitName unit, Vector3 position, Quaternion rotation
        public static void CreateObject(ProtocolBase protocol)
        {
            int           start = 0;
            ProtocolBytes proto = (ProtocolBytes)protocol;

            proto.GetNameX(start, ref start);
            UnitName   unitName = (UnitName)proto.GetByte(start, ref start);
            Vector3    pos      = ParseVector3(proto, ref start);
            Quaternion rot      = ParseQuaternion(proto, ref start);
            int        unitId   = proto.GetByte(start, ref start);

            bool       isLocal  = proto.GetByte(start, ref start) == 1;
            UnitData   unitData = Gamef.LoadUnitData(unitName);
            GameObject prefab   = isLocal ? unitData.LocalPrefab : unitData.NetPrefab;
            GameObject gameObj  = Gamef.Instantiate(prefab, pos, rot);
            //set id
            Unit unit = gameObj.GetComponent <Unit>();

            unit.InitAttributes(unitId);
            if (unitName == UnitName.Player && isLocal)
            {
                CameraGroupController.Instance.ResetTransform(pos, rot);
                GameCtrl.PlayerUnit = unit;
            }
        }
コード例 #3
0
    public void StartCreatePlayer(int playerID)
    {
        Debug.Log("Player ID = " + playerID);
        if (GameSceneInfo.Instance == null)
        {
            Debug.Log("Null instance");
        }
        else if (GameSceneInfo.Instance.spawnPoints[playerID] == null)
        {
            Debug.Log("Null spawnPoint");
        }
        Transform t = GameSceneInfo.Instance.spawnPoints[playerID].transform;

        if (GameCtrl.IsOnlineGame)
        {
            DataSync.CreateObject(UnitName.Player, t.position, t.rotation);
        }
        else
        {
            UnitData data = Gamef.LoadUnitData(UnitName.Player);
            Unit     unit = Gamef.Instantiate(data.LocalPrefab, t.position, t.rotation).GetComponent <Unit>();
            CameraGroupController.Instance.ResetTransform(t.position, t.rotation);
            GameCtrl.PlayerUnit = unit;
        }
    }