Using System;
Using System. Collections;
Using System. Collections. Generic;
Using unityengine;
Public class carcontroller: Monobehaviour.
{
Private const string horızontal = "horizontal";
Private const string vertıcal = "vertical";
Private float horizontalınput;
Private float verticalınput;
Private float currentsteerangle;
Private float currentbreakforce;
Private bool isbreaking;
[SerializeField] private float motorforce;
[SerializeField] private float breakforce;
[SerializeField] private float maxsteerangle;
[SerializeField] private wheelcollider frontleftwheelcollider;
[SerializeField] private wheelcollider frontrightwheelcollider;
[SerializeField] private wheelcollider rearleftwheelcollider;
[SerializeField] private wheelcollider rearrightwheelcollider;
[SerializeField] private transform frontleftwheeltransform;
[SerializeField] private transform frontrightwheeltransform;
[SerializeField] private transform rearleftwheeltransform;
[SerializeField] private transform rearrightwheeltransform;
Private Void FixedUpdate()
{
GetInput();
HandleMotor();
HandleSteering();
UpdateWheels();
// Frontleftwheelcollider. Motortorque = 0.17F * motorforce;
}
Private Void GetInput()
{
Horizontalınput = ınput. Getaxis(horızontal);
Verticalınput = ınput. Getaxis(vertıcal);
İsbreaking = ınput. Getkey(keycode. Space);
}
Private Void HandleMotor()
{
Frontleftwheelcollider. Motortorque = verticalınput * motorforce;
Frontrightwheelcollider. Motortorque = verticalınput * motorforce;
Currentbreakforce = isbreaking? Breakforce: 0F;
ApplyBreaking();
}
Private Void ApplyBreaking()
{
Frontrightwheelcollider. Braketorque = currentbreakforce;
Frontleftwheelcollider. Braketorque = currentbreakforce;
Rearleftwheelcollider. Braketorque = currentbreakforce;
Rearrightwheelcollider. Braketorque = currentbreakforce;
}
Private Void HandleSteering()
{
Currentsteerangle = maxsteerangle * horizontalınput;
Frontleftwheelcollider. Steerangle = currentsteerangle;
Frontrightwheelcollider. Steerangle = currentsteerangle;
}
Private Void UpdateWheels()
{
Updatesinglewheel(frontleftwheelcollider, frontleftwheeltransform);
Updatesinglewheel(frontrightwheelcollider, frontrightwheeltransform);
Updatesinglewheel(rearrightwheelcollider, rearrightwheeltransform);
Updatesinglewheel(rearleftwheelcollider, rearleftwheeltransform);
}
Private Void updatesinglewheel(wheelcollider wheelcollider, transform wheeltransform)
{
Vector3 POS;
Quaternion rot;
Wheelcollider. Getworldpose(out POS, out rot);
Wheeltransform. Rotation = rot;
Wheeltransform. Position = POS;
}
}