void FixedUpdate() { CheckNodeDistance(); if (_avoiding || _stucked) { _avoiding = false; return; } _steerWheel.SetSteerAxis(Mathf.Lerp(_steerWheel.SteerAxis, SteerAxis, Time.deltaTime * SteerSpeed)); }
private void AvoidObstacle(CarSensor.Sensor[] sensors, RaycastHit hit) { if (_stucked) { return; } var frontalObstacule = new CarSensor.Sensor[] { CarSensor.Sensor.Front, CarSensor.Sensor.FrontR, CarSensor.Sensor.FrontL }; BroadcastMessage("SetAvoiding", true, SendMessageOptions.DontRequireReceiver); var steerAxis = 0f; if (sensors.Contains(CarSensor.Sensor.FrontL)) { steerAxis += 1f; } else if (sensors.Contains(CarSensor.Sensor.Left)) { steerAxis += 0.5f; } if (sensors.Contains(CarSensor.Sensor.FrontR)) { steerAxis -= 1f; } else if (sensors.Contains(CarSensor.Sensor.Right)) { steerAxis -= 0.5f; } if (steerAxis == 0 && frontalObstacule.All(x => sensors.Contains(x))) { steerAxis += hit.normal.x < 0 ? -1f : 1f; } _steerWheel.SetSteerAxis(steerAxis); }