Управление объектом

Программирование на Юнити.

Управление объектом

Сообщение LINESS 18 мар 2020, 14:49

Здравствуйте, есть вполне рабочий скрипт на движение лабиринта, но единственное, хотелось бы большей плавности при поворотах за пальцем, подскажите пожалуйста, можно ли сделать это? и как?

{
Rigidbody2D rb2D;
Vector3 oldDirection;
float speed = 30.5f;

void Start()
{
rb2D = GetComponent<Rigidbody2D>();

rb2D.isKinematic = true;
rb2D.collisionDetectionMode = CollisionDetectionMode2D.Continuous;
}

void Update()
{
if (Input.touchCount > 0)
{
Touch touch = Input.GetTouch(0);

switch (touch.phase)
{
case TouchPhase.Began:
oldDirection = GetWorldTouchPosition(touch) - transform.position;
break;

case TouchPhase.Ended:
rb2D.angularVelocity = 0.5f;
break;

case TouchPhase.Moved:
var currentDirection = GetWorldTouchPosition(touch) - transform.position;
float angle = Vector2.SignedAngle(oldDirection, currentDirection);
rb2D.angularVelocity = angle * speed;
oldDirection = currentDirection;
break;
}
}
}

Vector3 GetWorldTouchPosition(Touch touch)
{
return Camera.main.ScreenToWorldPoint(touch.position);
}
}
LINESS
UNец
 
Сообщения: 5
Зарегистрирован: 18 мар 2020, 14:38

Re: Управление объектом

Сообщение 1max1 18 мар 2020, 15:26

Синтаксис:
Используется csharp
rb2D.angularVelocity = Mathf.Lerp(rb2D.angularVelocity, angle * speed, Time.deltaTime * 5.0f);
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5