Страница 1 из 1

Физика батута [РЕШЕНО]

СообщениеДобавлено: 09 июн 2018, 08:55
Maran
Есть 2d игра. В ней мяч и 2 батута (кубы с физ. материалом и упругостью) под и над мячом. Мяч падает сверху на нижний батут. Если упругость до 1.5, мяч несильно высоко отпрыгнет от батута. Но если чуть увеличить эту самую упругость, то мяч долетит до верхнего батута и начнет скакать между батутами. Очень быстро скорость станет огромной и даже при continious collisions мяч проскочит через батут.
Как этого избежать? Уменьшить упругость, до 1 и ниже? Но тогда мяч слабо прыгает. Уменьшить массу мяча? Тогда в свободном падении он падает медленно. Какой еще параметр можно изменить? ЗЫ пробовал добавить мячу найденный в инете скрипт DoNotGoThrough, но он вообще очень сильно гасит скорость.

Re: Физика батута

СообщениеДобавлено: 09 июн 2018, 21:57
Maran
нашел решение

Re: Физика батута

СообщениеДобавлено: 10 июн 2018, 08:49
Norman
Maran писал(а):нашел решение

Спасибо что поставили в известность :)
Но будет ещё лучше если поделитесь этим решением, вопрос интересует.

Re: Физика батута

СообщениеДобавлено: 15 июн 2018, 20:31
Maran
Norman писал(а):
Maran писал(а):нашел решение

Спасибо что поставили в известность :)
Но будет ещё лучше если поделитесь этим решением, вопрос интересует.

Да, конечно)
Возможно, не самое правильное, но делаю батут триггером и вешаю на него скрипт
Синтаксис:
Используется csharp
using UnityEngine;

public class Batut : MonoBehaviour {
   
    public float power = 2f;
    public float maxSpeed = 25f;

    void OnTriggerEnter2D(Collider2D collision)
    {
        var rb = collision.gameObject.GetComponent<Rigidbody2D>();
        rb.velocity = -rb.velocity;
        if (rb.velocity.magnitude <= maxSpeed)
            rb.velocity *= power;

    }
   
}

maxSpeed - ограничение по скорости, мне нужно для того, чтоб объект не разогнался слишком сильно и не проходил сквозь стены)