О, понятно.
Вы нажимаете кнопку со стрелкой вправо.
Теперь посмотрите на эту строку:
mDTS.movement += (Vector2)transform.right * speed * tHorizontal * Time.deltaTime;
mDTS.movement будет увеличен. Допустим, это первый раз, когда вы нажимаете «стрелка вправо». Скажем, mDTS.movement был (0,0) -вектором до нажатия, а теперь он (1,0) -вектором из-за увеличения.
Когда вы отпустите кнопку, mDTS.movement не будет снова установлен в 0.
Нет «взлома». Нет трения. Что вам нужно сделать, это (что-то вроде этого):
float friction = 0.95f;
float halt_speed = 0.05f;
void SpeedClamp()
{
if (movement.magnitude > max_ms)
{
movement = movement.normalized * max_ms;
}
movement = movement * friction;
if (movement.magnitude < halt_speed)
movement = Vector2.Zero;
}
С этим кодом персонаж будет замедляться при каждом обновлении. Как машина на дороге, когда ты больше не ускоряешься. Просто катится без поломок.
Если вам не нужен «ледяной эффект», просто установите вектор движения на ноль, как только вы отпустите кнопку. Как:
// Update is called once per frame
void Update()
{
float tHorizontal = Input.GetAxis("Horizontal");
//float tVertical = Input.Get
if (tHorizontal != 0.0f) {
mDTS.movement += (Vector2)transform.right * speed * tHorizontal * Time.deltaTime;
} else {
mDTS.movement = Vector2.Zero;
}
}
Однако этот режим заставит вашего персонажа быстро бегать, пока вы нажимаете кнопку, и как только вы отпускаете кнопку, персонаж мгновенно останавливается.