@Hutson

Как запретить объекту двигаться?

Сейчас у меня есть код, чтобы элемент мог постоянно двигаться влево.
obj.transform.Translate(Vector2.left * speed * Time.deltaTime);

Но как мне сделать, чтобы при коллизии с объектом(уже сделал) объект больше не мог двигаться, а просто падал на землю. Вот код:
void OnCollisionEnter2D(Collision2D wall) {
    if (wall.gameObject.tag == "Respawn") { //наткнулся ли на стену
      
      obj.GetComponent<Rigidbody2D>().mass += 5;
      obj.GetComponent<Rigidbody2D>().gravityScale += 10;
      Invoke("ReloadLevel", 2f); // перезагрузка уровня
    }
  • Вопрос задан
  • 60 просмотров
Решения вопроса 2
DanceM
@DanceM Куратор тега Unity Game Engine
Кто хочет -ищет способ, кто не хочет -ищет причину
Думаю после столкновения достаточно будет выключить ваш скрипт движения.

Возможно Вам захочеться еще обнулить velocity по одной из осей после столкновения, чтобы не летел по инерции в сторону. Но может и не обязательно, т.к. должна гаситься при ударе.
Ответ написан
DanielMcRon
@DanielMcRon
C# && Unity
Отключить в начале гравитацию(если он просто летит влево). А при столкновении включать её, чтобы падал игрок. И как из простейших вариантов отключать скрипт передаижения

Поправочки в коде:
Постоянное получение компонента в вашем случае RigidBody2D нагружает систему, лучше это получать в старте и записать куда-то. Либо до компиляции указать компонент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
KubRu Москва
от 50 000 до 100 000 ₽
GD Company Санкт-Петербург
от 120 000 до 150 000 ₽
от 130 000 до 200 000 ₽
08 апр. 2020, в 04:51
16000 руб./за проект
08 апр. 2020, в 00:40
15000 руб./за проект