Need to turn WheelCollider between 2 AXSpoints
Hello
i am trying to auto turn when swipe from left to write an opisit , the example image below show what i mean
so when i swipe Right , the wheels will turn 50 dgrees , and befor the car approch B the wheels should start return to -25 to keep the car on track .
sorry for my English , i will try to make it more explained .
i have 2 lanes when user swipe right the car will go right when swipe left it will go left , but the wheels is keep going left i am not able to calculate the dgress to readjust the wheels angels based on X location between 2 lanes and the car position .
here is my code :
private float diseredLane = 1.0f; // 0 left 1 middle 2 right
private Rigidbody rb;
public WheelCollider[] wheels;
//Speed modifire
private float speed = 10.0f;
private float speedDecreaseLastTick;
private float SppedDecreaseTime = 1.0f;
private float speedDecreaseAmmout = 1.0f;
private float goindTo = 0f;
private float goingFrom = 0f;
private Quaternion myRotation;
public void Start()
{
this.myRotation = transform.rotation;
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
private void Update()
{
if (Time.time - speedDecreaseLastTick > SppedDecreaseTime)
{
speedDecreaseLastTick = Time.time;
speed -= speedDecreaseAmmout;
speed = speed < 0f ? 0f : speed;
}
//Rotate where should Go
Vector3 dir = Vector3.forward * speed;
if (MobileInput.Instance.SwipeLeft)
{
this.MoveLane(false);
wheels[0].steerAngle = -50f;
wheels[1].steerAngle = wheels[0].steerAngle;
}
else
if (MobileInput.Instance.SwipeRight)
{
this.MoveLane(true);
wheels[0].steerAngle = 50f;
wheels[1].steerAngle = wheels[0].steerAngle;
}
dir.y = rb.velocity.y;
dir.x = rb.velocity.x;
// From the lane position for example 0f, going to is next lane position for example 2f; and it will be oposite like going from 2f to 0f;
var scaledValue = Mathf.Clamp(dir.x / this.goindTo, this.goingFrom, this.goindTo);
wheels[0].steerAngle = 50f - (50 * scaledValue);
wheels[1].steerAngle = wheels[0].steerAngle;
rb.velocity = dir;
//rb.AddForce(transform.rotation * Vector3.forward);
//transform.position = Vector3.Lerp(transform.position, dir, TURN_SPEED * Time.deltaTime);
}
Your answer
Follow this Question
Related Questions
How to rotate Wheelcollider in Unity53.4f1 2 Answers
Explain how WheelCollider worksa 1 Answer
Ragdoll with Wheel Collider flips wheel collider 0 Answers
Wheel Collider help 0 Answers