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

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

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

Когда столкнулся в своем проекте с этой проблемой, то подумал, что косяк где то в проекте(там игра для телефона, поэтому сила добавлялась при нажатии на 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);
    }
}
 

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

СообщениеДобавлено: 12 май 2022, 20:25
1max1
Силы мало, умножь на лям хотя бы. И инпут никто в фикс апдейте не проверяет, только апдейт.

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

СообщениеДобавлено: 13 май 2022, 17:12
Taima
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!");  //Так же доходит до кода
    }
}
 

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

СообщениеДобавлено: 13 май 2022, 19:33
1max1
UPD: Убрал движение в метод Update по нажатию левой кнопки мыши и все заработало. Видимо был косяк в UI кнопке.

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

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

СообщениеДобавлено: 17 май 2022, 16:48
Taima
1max1 писал(а):То есть ты убрал код, который был на мышке, а виновата кнопка на юи? Где логика?


В моем основном проекте игра создается на андроид. Я этот код запихал в UI кнопку, но от туда почему то код не работает.