не могу разобраться с Invoke()

Рейтинг: -1Ответов: 1Опубликовано: 25.04.2023

я хочу чтобы когда я нажимал на кнопку "w" объект начал перемещаться наверх по 10y в секунду Я использовал Invoke а объект сразу телепортируется на 50 y без задержки

    void goUp()
    {
        ts.position +=  new Vector3(0,10,0);
    }

    void posUp()
    {
        while(downOtherKey == false)
        {
            while(i <=5)
            {
                Invoke("goUp",1f);  
                i++;
            }
            downOtherKey = true;
        }
    }
    
    void Update()
    {
        if(Input.GetKeyDown("w"))
        {
            posUp();
        }
    }

Ответы

▲ -2Принят

Советую вместо Update использовать FixedUpdate. Стандартно он вызывается 50 раз в секунду, т.е. в GoUp поставьте 0.2 по y

И, совет. Не делайте передвижение через transform, если, конечно же, вы не хотите пренебречь законами физики. Для передвижения "по-физике" отлично подходит RigidBody и установление его velocity (скорости)