コード例 #1
0
    private void Start()
    {
        /*エンジンの回転から前に力を加える処理
         * 車体を進行方向に向かせる処理*/
        (this).FixedUpdateAsObservable()
        .Subscribe(_ =>
        {
            if (mGameSceneManager.SceneState != SceneState.GAME)
            {
                return;
            }

            float accel           = mPlayerInput.Accel.Value;
            float steer           = mPlayerInput.Hundle.Value;
            float brake           = mPlayerInput.Brake.Value;
            GearState currentGear = mPlayerInput.GetCurrentGear.Value;

            print("Brake : " + brake);

            //姿勢制御処理
            mAirRide.FixBalance(mRigidbody.velocity);
            //進行方向修正処理
            mDirFix.FixDirection(accel, steer);//傾く
            //ジャンプ中はブレーキとハンドルは制御させない
            if (!mAirRide.IsGround)
            {
                brake = 0.0f;
                steer = 0.0f;
            }

            RaycastHit hitInfo = new RaycastHit();
            mAIPenaltyRay.ForwardBoxCast(out hitInfo);
            //aiと正面方向が衝突したときaccel無効にする
            //アクセルを切っても速度は結構生きているかも?

            steer = SteeringScript.IgnoreLSteer(mWallHitCheck.LHit, steer);
            steer = SteeringScript.IgnoreRSteer(mWallHitCheck.RHit, steer);
            //ペナルティ処理
            mEngine.GiveWallPenalty(mWallHitCheck.LOrRHit);
            mEngine.GiveDriftPenalty(mVehicleMove.GetWheelState == WheelState.DRIFT, transform.forward);
            bool aiPenalty = (hitInfo.transform != null) && hitInfo.transform.gameObject.CompareTag(ConstString.Tag.AI);
            mEngine.GiveAiPenalty(aiPenalty);

            float engineRot = mEngine.UpdateRotateEngine(accel, brake, currentGear);

            steer = SteeringScript.InverseSteer(engineRot, steer);
            //車を動かす処理
            mVehicleMove.UpdateMove(engineRot, steer, brake, mAirRide.IsGround);

            //データ書き込み処理
            WriteToModel(engineRot, currentGear);
        });

        this.OnCollisionStayAsObservable().Subscribe(_ =>
        {
            mEngine.OnCollisionStay();
        });
    }
コード例 #2
0
 /// <summary>
 /// ■rigidbody:自分の車のRigidbody
 /// ■transform:自分の車のtrasnform
 /// ■wheelParams:タイヤの各状態時の滑り具合
 /// </summary>
 /// <param name="rigidbody"></param>
 public VehicleMove(Rigidbody rigidbody, Transform transform, WheelParams wheelParams,
                    VehicleSettings.DriftSettings driftSettings, VehicleSettings.SteerSensitivities steerSensitivities)
 {
     mRigidbody      = rigidbody;
     mTransform      = transform;
     mWheelParams    = wheelParams;
     mSteeringScript = new SteeringScript(steerSensitivities);
     mDriftScript    = new DriftScript(driftSettings);
 }