Как заставить проигрыватель плавно следовать позиции касания x ?

#c# #unity3d #mobile

#c# #единство 3d #Мобильный #unity3d

Вопрос:

Извините за вопрос новичка, я все еще новичок в Unity.

В настоящее время я создаю 2d-игру в Unity, в которой у меня есть игровой объект, который должен плавно перемещаться по оси x в соответствии с положением касания x, чтобы создать приятную механику свайпа (принимая во внимание, что на объект постоянно влияет сила тяжести Rigidbody2d).

Я уже пытался сделать это с помощью Vector3.MoveTowards(), Rigidbody2D.MovePosition() и изменения скорости Rigidbody2D, но ни одно из них не создало плавного движения.

Vector3.MoveTowards():

 transform.position = Vector3.MoveTowards(transform.position, new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, transform.position.y, transform.position.z), speed * Time.deltaTime);
  

Rigidbody2D.MovePosition():

 rigidbody2D.MovePosition(new Vector3(Camera.main.ScreenToWorldPoint(Input.mousePosition).x, 
transform.position.y, transform.position.z));
  

Rigidbody2D.velocity

 Vector3 mousePositionWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if (mousePositionWorld.x < transform.position.x)
{
   rigidbody2D.velocity = new Vector2(-speed - -(speed * takeOff), 
   rigidbody2D.velocity.y)
}

else if (mousePositionWorld.x > transform.position.y)
{
   rigidbody2D.velocity = new Vector2( speed - (speed * takeOff), 
   rigidbody2D.velocity.y);
}
  

Я что-то упускаю или есть лучший способ добиться этого?

Ответ №1:

Я не знаю, что вы подразумеваете под плавным, но я думаю, что вы можете использовать функцию Lerp. Вот пример:https://www.youtube.com/watch?v=d6BPukJ5QkA это короткое видео.