Метод AddForce не работает

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

Метод AddForce не работает

Сообщение Taima 12 май 2022, 19:17

В общем, в создании игры, столкнулся с такой проблемой:
По какой то причине не получается предать импульс объекту(идея в том, что бы игрок по нажати кнопки мог ускорять объект, который сам катится с горки).

Когда столкнулся в своем проекте с этой проблемой, то подумал, что косяк где то в проекте(там игра для телефона, поэтому сила добавлялась при нажатии на UI кнопку. Думал в этом дело). Поэтому зашел на пустую юньку, поставил пол и обычный кубик. Написал скрипт, что при нажатии W кубику передается импульс вверх:
rb.AddForce(Vector3.Up, ForceMode.Impulse), но ничего не происходит, даже не шелохнулся.

Проверял массу, силу, галочку на кинематик, фриз, FixedUpdate. Т.к. это пустой проект, лишних компонентов тоже не добавлял. Тем не менее метод не работает
Идей уже не осталось, подскажите, в чем может быть причина?
Версия Unity: 2020.3.32f1

Код:
Синтаксис:
Используется csharp
using UnityEngine;

public class AddForce : MonoBehaviour
{
    private Rigidbody _rb;
    public float force = 100f;

    private void Start()
    {
        _rb = GetComponent<Rigidbody>();
    }

    private void FixedUpdate()
    {
        if (Input.GetKeyDown(KeyCode.W))
            Debug.Log("Force!");   //Все прекрасно выводит в консоль, но объект не движется
            _rb.AddForce(Vector3.up, ForceMode.Impulse);
    }
}
 
Taima
UNец
 
Сообщения: 8
Зарегистрирован: 23 апр 2022, 12:36

Re: Метод AddForce не работает

Сообщение 1max1 12 май 2022, 20:25

Силы мало, умножь на лям хотя бы. И инпут никто в фикс апдейте не проверяет, только апдейт.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Метод AddForce не работает

Сообщение Taima 13 май 2022, 17:12

1max1 писал(а):Силы мало, умножь на лям хотя бы. И инпут никто в фикс апдейте не проверяет, только апдейт.


В тестовой юньке все заработало. Поменял на Update, уменьшил массу и все ок
Но в основном проекте это почему то не помогает. ставил силу уже и на миллиард,но что то не так. При этому массу поставил 0.1

UPD: Убрал движение в метод Update по нажатию левой кнопки мыши и все заработало. Видимо был косяк в UI кнопке. Но тем не менее при нажатии кнопки дбагер выводил в консоль. Можете подсказать, почему так? Потому что эта игра для мобилок и для меня вариант только по нажатию UI.
Синтаксис:
Используется csharp
using UnityEngine;

public class AddForceForPlayer : MonoBehaviour
{
    public float force = 10000000f;
    public void AddForce()
    {
        GetComponent<Rigidbody>().AddForce(transform.forward * force, ForceMode.Impulse);
        Debug.Log("force!");  //Так же доходит до кода
    }
}
 
Taima
UNец
 
Сообщения: 8
Зарегистрирован: 23 апр 2022, 12:36

Re: Метод AddForce не работает

Сообщение 1max1 13 май 2022, 19:33

UPD: Убрал движение в метод Update по нажатию левой кнопки мыши и все заработало. Видимо был косяк в UI кнопке.

То есть ты убрал код, который был на мышке, а виновата кнопка на юи? Где логика?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Метод AddForce не работает

Сообщение Taima 17 май 2022, 16:48

1max1 писал(а):То есть ты убрал код, который был на мышке, а виновата кнопка на юи? Где логика?


В моем основном проекте игра создается на андроид. Я этот код запихал в UI кнопку, но от туда почему то код не работает.
Taima
UNец
 
Сообщения: 8
Зарегистрирован: 23 апр 2022, 12:36


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

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

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


cron