Да, ваш ответ правильный. То есть: L = {wabcv: v,w ∈ {a,b,c}*}
SmoothStep не поможет Вам здесь. SmoothStep является двумя функциями интерполяции значения. Это делает что-то подобное интерполяции пазухи. Это ускорится, медленно имеют резкую скорость приблизительно в x=0.5 и затем замедляются к прибытию (x=1.0).
Как следующее:
Это приблизительно, реальная функция не имеют этих точных чисел.
Да Вы могли использовать x=0.. 0.5 для достижения эффекта Вы хотите, но с очень небольшим управлением ускоряющей кривой.
Если бы Вы хотите действительно ускорить автомобиль или какой-либо другой объект, Ваш лучший выбор состоял бы в том, чтобы отслеживать ускорение и скорость собой.
class Car : GameComponent
{
public override void Update(GameTime time)
{
velocity += acceleration * time.ElapsedGameTime.TotalSeconds;
position += velocity * time.ElapsedGameTime.TotalSeconds;
}
Vector3 position;
Vector3 velocity;
Vector3 acceleration;
}
положение, скорость и ускорение, являющееся Vector2 или Vector3 в зависимости от того, сколько использует размер Ваше игровое состояние. Кроме того, обратите внимание, что эта форма интеграции подвержена небольшим математическим ошибкам.
Очень полезный сайт я нашел тем временем. http://johnnygizmo.blogspot.com/2008/10/xna-series-basic-ai.html
Из этой документации похоже, что SmoothStep берет 3 аргумента - два значения, которые Вы хотите переместить между и сумма между ними, которая, вероятно, должна быть между 0 и 1.
Поэтому скажите, что у Вас есть плавание f, который увеличивает линейно от 0 до целевой скорости в течение времени. вместо того, чтобы использовать f непосредственно в качестве скорости, с помощью SmoothStep был бы похож на это:
float speed = MathHelper.SmoothStep(0, destSpeed, f/destSpeed);
Действительно удивительно, как плохо эта документация.