Esempio n. 1
0
    public Engine(EngineSpeedCalc engineCalc, Rigidbody rigidbody, IGearManageable input, IReadOnlyReactiveProperty <GearState> gear)
    {
        mEngineCalc  = engineCalc;
        mRigidbody   = rigidbody;
        mGearManager = input;

        gear
        .Buffer(2, 1)
        .Subscribe(x =>
        {
            //現在のギアデータ
            GearState currentGear = x.Last();
            //1つ前のギアデータ
            GearState preGear = x.First();


            //atの時ギアが下がった時に速度が少し下がる処理
            //mtの時度外視
            if (input.GetGearManager.IsMT)
            {
                return;
            }
            //Rの時は度外視
            if (currentGear == GearState.REVERSE)
            {
                return;
            }
            if (preGear == GearState.REVERSE)
            {
                return;
            }
            //ギアが下げられた場合
            if ((int)currentGear < (int)preGear)
            {
                mEngineSpeed -= 5.0f;
            }
        });
    }
Esempio n. 2
0
    private void Initialize()
    {
        AccessToResources();
        //ユーザーの入力を取得
        mPlayerInput           = GetComponent <IPlayerInput>();
        mRigidbody             = GetComponent <Rigidbody>();
        mDataUiCarModel        = FindObjectOfType <DataUiCarModel>();
        mGameSceneManager      = FindObjectOfType <GameSceneManager>();
        mRigidbody.constraints = RigidbodyConstraints.FreezeRotation;
        mRigidbody.useGravity  = false;
        mInitializer           = new TransformInitializer(transform);
        //エンジン内で使用する計算クラス
        EngineSpeedCalc engineCalc = new EngineSpeedCalc(mVehicleSettings.GetEngineSettings, mVehicleSettings.GetPenaltySettings, mGearParam, mPlayerInput.GetCurrentGear);

        //エンジンを初期化
        mEngine = new Engine(engineCalc, mRigidbody, gameObject.FindObjectOfInterface <IGearManageable>(), mPlayerInput.GetCurrentGear);

        mVehicleMove = new VehicleMove(mRigidbody, transform, mWheelParams,
                                       mVehicleSettings.GetDriftSettings, mVehicleSettings.GetSteerSensitivities);
        mAirRide      = new AirRide(transform, mRayConfig.GetAirRideRayConfig, mVehicleSettings.GetAirRideSettings);
        mDirFix       = new DirectionFix(transform, mRayConfig.GetDirectionFixRayConfig);
        mAIPenaltyRay = new DirectionFixRay(transform, mRayConfig.GetDirectionFixRayConfig);
        mWallHitCheck = new WallHitCheck(transform, mRayConfig.GetLRRayConfig);
    }