#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 это короткое видео.