Я нашла несколько ошибок в вашем скрипте, которые могут вызывать проблему с добавлением компонента скрипта. Вот исправленный вариант вашего кода:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// Изменила модификатор доступа класса на public, чтобы он был виден в редакторе Unity
public class CarController : MonoBehaviour
{
[SerializeField] private Transform _transformFL;
[SerializeField] private Transform _transformFR;
[SerializeField] private Transform _transformRL;
[SerializeField] private Transform _transformRR;
[SerializeField] private WheelCollider _colliderFL;
[SerializeField] private WheelCollider _colliderFR;
[SerializeField] private WheelCollider _colliderRL;
[SerializeField] private WheelCollider _colliderRR;
[SerializeField] private float _force;
[SerializeField] private float _maxAngle;
private void FixedUpdate()
{
// Исправила опечатку в названии коллайдера
_colliderFL.motorTorque = Input.GetAxis("Vertical") * _force;
_colliderFR.motorTorque = Input.GetAxis("Vertical") * _force;
// Убрала лишнюю точку с запятой после условия
if(Input.GetKey( KeyCode.Space ))
{
// Применила тормозной крутящий момент ко всем коллайдерам
_colliderFL.brakeTorque = 3000f;
_colliderFR.brakeTorque = 3000f;
_colliderRL.brakeTorque = 3000f;
_colliderRR.brakeTorque = 3000f;
}
else
{
// Сбросила тормозной крутящий момент для всех коллайдеров
_colliderFL.brakeTorque = 0f;
_colliderFR.brakeTorque = 0f;
_colliderRL.brakeTorque = 0f;
_colliderRR.brakeTorque = 0f;
}
// Применила угол поворота к передним коллайдерам
_colliderFL.steerAngle = _maxAngle * Input.GetAxis("Horizontal");
_colliderFR.steerAngle = _maxAngle * Input.GetAxis("Horizontal");
// Вызвала метод RotateWheel для всех коллайдеров и трансформов
RotateWheel(_colliderFL, _transformFL);
RotateWheel(_colliderFR, _transformFR);
RotateWheel(_colliderRL, _transformRL);
RotateWheel(_colliderRR, _transformRR);
}
private void RotateWheel(WheelCollider collider, Transform transform)
{
Vector3 position;
Quaternion rotation;
collider.GetWorldPose(out position, out rotation);
transform.rotation = rotation;
// Исправила опечатку в названии свойства
transform.position = position;
}
}
Имя файла такое же как и класс.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
private class CarController : MonoBehaviour
{
[SerializeField] private Transform _transformFL;
[SerializeField] private Transform _transformFR;
[SerializeField] private Transform _transformRL;
[SerializeField] private Transform _transformRR;
[SerializeField] private WheelCollider _colliderFL;
[SerializeField] private WheelCollider _colliderFR;
[SerializeField] private WheelCollider _colliderRL;
[SerializeField] private WheelCollider _colliderRR;
[SerializeField] private float _force;
[SerializeField] private float _maxAngle;
private void FixedUpdate()
{
_colliderFL.motorTorque = Input.GetAxis("vertical") * _force;
_colliderFL.motorTorque = Input.GetAxis("vertical") * _force;
If(Input.GetKey( KeyCode.Space ));
{
_colliderFL.brakeTorque = 3000f;
_colliderFL.brakeTorque = 3000f;
_colliderFL.brakeTorque = 3000f;
_colliderFL.brakeTorque = 3000f;
}
else
{
_colliderFL.brakeTorque = 0f;
_colliderFL.brakeTorque = 0f;
_colliderFL.brakeTorque = 0f;
_colliderFL.brakeTorque = 0f;
}
_colliderFL.steerAngle = _maxAngle * Input.GetAxis("Horizontal");
_colliderFL.steerAngle = _maxAngle * Input.GetAxis("Horizontal");
RotateWheel(_colliderFL, _transformFL);
RotateWheel(_colliderFL, _transformFR);
RotateWheel(_colliderFL, _transformRL);
RotateWheel(_colliderFL, _transformRR);
}
private void RotateWheel(WheelCollider collider, Transform transform)
{
Vector3 position;
Quaternion rotation;
collider.GetWorldPose(out position, out rotation);
transform.rotation = rotation;
transform.rotation = position;
}
}