Объекты проходят сквозь друг друга.

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Объекты проходят сквозь друг друга.

Сообщение strusik 18 ноя 2019, 19:57

Я создаю игру, в которой надо ловить падающие мячи в корзинку, но столкнулся с проблемой, что мячи лежащие внутри корзины проскакивают сквозь стенки, если корзину слишком резко двинуть в какую либо из сторон. Я лазил по просторам гугла и там много было советов, по поводу того, чтобы в настройках Rigidbody объекта менять Collision detection, я это пробовал, а также пробовал осуществлять движение через transform.position и через Rigidbody, но ни один из вариантов не сработал. И у мячей, и у корзины есть коллайдеры и Rigidbody.

А вот скрипт по которому происходит движение на данный момент:
Скрытый текст:
Код: Выделить всё
public Rigidbody player;

   void OnMouseDrag () {
       Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
       player.GetComponent<Rigidbody>().position = new Vector3(mousePosition.x, player.position.y, 15);
   }



Изображение
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52

Re: Объекты проходят сквозь друг друга.

Сообщение 1max1 18 ноя 2019, 20:06

player.GetComponent<Rigidbody>().position

Ну все понятно. Уже наверное раз 250 отвечал на такие вопросы. Двигать нужно через velocity или addForce, но лучше первое.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Объекты проходят сквозь друг друга.

Сообщение strusik 18 ноя 2019, 20:07

1max1 писал(а):
player.GetComponent<Rigidbody>().position

Ну все понятно. Уже наверное раз 250 отвечал на такие вопросы. Двигать нужно через velocity или addForce, но лучше первое.

velocity уже пробовал, просто удалил код старый, не сработало.
Ну или можно пример с velocity, может я не правильно что-то делал?
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52

Re: Объекты проходят сквозь друг друга.

Сообщение 1max1 18 ноя 2019, 20:31

Почему в 2д игре у тебя rb, а не rb2d?
Синтаксис:
Используется csharp
    public Rigidbody2D player;

    void OnMouseDrag()
    {
        Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        player.velocity = (mousePosition - player.position).normalized * 999999.0f;
    }
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Объекты проходят сквозь друг друга.

Сообщение strusik 18 ноя 2019, 20:38

1max1 писал(а):Почему в 2д игре у тебя rb, а не rb2d?
Синтаксис:
Используется csharp
    public Rigidbody2D player;

    void OnMouseDrag()
    {
        Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        player.velocity = (mousePosition - player.position).normalized * 999999.0f;
    }

Просто шарики и корзина это 3д объекты, из-за ракурса камеры этого не видно
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52

Re: Объекты проходят сквозь друг друга.

Сообщение strusik 18 ноя 2019, 21:02

1max1 писал(а):Почему в 2д игре у тебя rb, а не rb2d?
Синтаксис:
Используется csharp
    public Rigidbody2D player;

    void OnMouseDrag()
    {
        Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        player.velocity = (mousePosition - player.position).normalized * 999999.0f;
    }


Теперь корзина вообще не перемещается по какой-то причине
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52

Re: Объекты проходят сквозь друг друга.

Сообщение immeasurability 18 ноя 2019, 23:15

я бы сделал коллайдер размером емкости стакана
и фиксировал бы в момент когда шар попадает в стакан в список
при перемещение стакана проходился по массиву и двигал дополнительно шары в стакане
Discord era#6140

youtube.com/user/immeasurability/videos
Аватара пользователя
immeasurability
Адепт
 
Сообщения: 1097
Зарегистрирован: 08 авг 2013, 18:09

Re: Объекты проходят сквозь друг друга.

Сообщение strusik 18 ноя 2019, 23:36

immeasurability писал(а):я бы сделал коллайдер размером емкости стакана
и фиксировал бы в момент когда шар попадает в стакан в список
при перемещение стакана проходился по массиву и двигал дополнительно шары в стакане


Дело в том, что эта штука с пролётом сквозь стенку работает и наоборот, то-есть шарик точно также может и наоборот влететь снаружи в стакан, так что всё таки надо решить именно эту проблему с пролётом сквозь стенку
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52

Re: Объекты проходят сквозь друг друга.

Сообщение 1max1 19 ноя 2019, 00:12

Если скорость очень большая, только руками (скриптом) фиксировать позицию шара, чтобы он не вылетал. Я только что проверил, велосити не дает 100% непроходимости, хотя если поставить continuous dynamic, довольно неплохо.

Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Объекты проходят сквозь друг друга.

Сообщение strusik 19 ноя 2019, 00:55

1max1 писал(а):Если скорость очень большая, только руками (скриптом) фиксировать позицию шара, чтобы он не вылетал. Я только что проверил, велосити не дает 100% непроходимости, хотя если поставить continuous dynamic, довольно неплохо.



Спасибо за видос и за ответы) Может мне стоит попробовать увеличить толщину стенок? Потому что у меня шарики вылетают даже при более маленькой скорости.

Update:

Методом мучений и неудачных попыток я таки сделал то, что надо и ничего не выскакивает из корзины, код ниже прикрепил. Но есть одно "но", мне нужно, чтобы корзинка двигалась плавно и быстро, а если поставить высокую скорость, то она двигается с рывками

Синтаксис:
Используется csharp
Rigidbody2D rb;
    float speed = 5.0f;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        StartCoroutine(c_move());
    }

    IEnumerator c_move()
    {
        while (true)
        {
            Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            int pos = Mathf.RoundToInt(mousePosition.x - rb.position.x);
            rb.velocity = (Vector2.right * pos) * speed;            
            yield return null;
        }        
    }
strusik
UNец
 
Сообщения: 7
Зарегистрирован: 18 ноя 2019, 19:52


Вернуться в Почемучка

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

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


cron