1 Востаннє редагувалося Chemist-i (29.07.2022 00:03:42)

Тема: Чому 2д об*єкт смикається у юніті? [вирішено]

Добрий день.
Я новачок.
Програмую нескінченний ранер на юніті.
Машинка їде вперед, перед нею спавниться дорога.
Ось код руху машинки:

public class TestMove : MonoBehaviour
{
    public Rigidbody2D rb;

    void Awake()
    {
        rb = GetComponent<Rigidbody2D>();
    }
    private void FixedUpdate()
    {
        rb.velocity = new Vector2(0, 5f);
    }
}

Проблема у тому, що коли я починаю тестувати, машинка, крім того що рухаеться вперед, швидко смикається взад вперед. Я не  розумію чому. Якщо можете, підкажіть у чому проблема.

Зазделегідь дякую.

2

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

Доречі, якщо я прикладаю силу методом

Void Start
{
    AddForce()
}

Це нічого не змінює. Усе одно машинка летить уперед і смикається

3

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

І ще доречі, коли я робив це без ріджит балі, просто з Transform, все працювало. Це так, провсяк випадок

4

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

По двох рядочкам коду трохи важко сказати в чому ж може бути проблема..
Ну, можу повангувати:

  • Проблема у масштабі (scale) ваших об'єктів

  • Проблема у камері

  • Я не знаю, як саме працює фізика в Юніті, але у Rigidbody є така пропертя interpolation

Подякували: danaroz1234, leofun012

5

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

А яка проблема може бути у масштабі?
Масштаб машинки (1,1,0)scale

6 Востаннє редагувалося wander (28.07.2022 14:40:41)

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

Ну, це могло б бути проблемою, якщо у вас був би дуже маленький масштаб, типу 0.1, але схоже це не ваш кейс. Я б розпочав з виставлення інтерполяції (тобто з останнього пункту) і рухався вверх по пунктах, якби це не допомогло.

Подякували: danaroz12341

7

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

Розібрався.
Проблема була в руху камери:

public class MoveCamera : MonoBehaviour
{
    public Transform my_camera;
    public Transform player;

    private Vector3 target;

    void Update()
    {
        target = new Vector3(player.position.x, player.position.y + 3.5f, my_camera.position.z );
        my_camera.position = Vector3.Lerp(my_camera.position, target, Time.fixedDeltaTime*3);//треба було не Time.fixedDeltaTime, а просто Time.deltaTime.
    }
}

судячи з усього, я просто у когось тупо переписав код))
Дякую))

8

Re: Чому 2д об*єкт смикається у юніті? [вирішено]

*і я також увімкнув інтерполяцію, якщо щось з цього не зробити буде смикатись

Подякували: wander1