У меня та же проблема с этим уроком, и я решил ее, используя вместо этого двигатель AddTorque И если ваше колесо покидает исходное место. Увеличьте его и убедитесь, что Колесный шарнир 2D находится точно по центру колеса, иначе он будет вибрировать на месте.
В этом уроке я решил это с помощью этого кода для BikeController.
using UnityEngine;
public class BikeController : MonoBehaviour
{
public float speed = 1500;
public float rotationSpeed = 10f;
public WheelJoint2D backWheel;
public WheelJoint2D frontWheel;
public Rigidbody2D rb;
private float movement = 0f;
private float rotation = 0f;
public Transform player;
void Update()
{
movement = Input.GetAxisRaw("Horizontal") * speed;
rotation = Input.GetAxisRaw("Vertical");
if (Input.touchCount > 0)
{
Touch tch = Input.GetTouch(0);
if (tch.position.x > player.position.x)
{
movement = speed;
}
if (tch.position.x < player.position.x)
{
movement = -speed;
}
}
}
void FixedUpdate()
{
if (movement == 0f)
{
backWheel.useMotor = false;
frontWheel.useMotor = false;
}
else
{
backWheel.useMotor = true;
frontWheel.useMotor = true;
JointMotor2D motor = new JointMotor2D { motorSpeed = movement, maxMotorTorque = 10000 };
backWheel.motor = motor;
frontWheel.motor = motor;
}
rb.AddTorque(rotation * rotationSpeed * Time.fixedDeltaTime);
}
}