void RvalueTest(std::vector<int>&& vectRvalue)
{
std::vector newVect(vectRvalue);
std::cout << "Тут, по идее, ничего никуда не копировалось" << std::endl;
}
int main()
{
setlocale(LC_ALL, "Russian");
std::vector<int> myVect = { 1, 2, 3, 4, 5 };
RvalueTest(std::move(myVect));
std::cout << "Тут должен быть ноль: " << myVect.size();
}
class A
{
private:
int value;
public:
A(int x) { this->value = x; };
int& getValue() { return this->value; };
};
A& getRef()
{
A a(5);
return a;
}
int main()
{
A& m = getRef();
std::cout << m.getValue();
int& getRef()
{
A a(5);
return a.getValue();
}
int main()
{
int& m = getRef();
std::cout << m;
}
auto vect = Foo{}.GetValues();
for (const auto& value : vect)
{
std::cout << value << std::endl;
}
#include <iostream>
int main()
{
int a = 5;
int& b = a;
int& c = b;
}
#include <iostream>
int main()
{
int a = 5;
int& b = a;
int& c = a;
}
int& b = func(a);
В данном случае персонаж будет очень медленно падать, потому что во время каждого вызова FixedUpdate метод MovePosition будет возвращать его на предыдущую координату y. То есть для 2D платформеров такой вариант не очень хорошо подходит.
Ещё есть вариант делать перемещение через AddForce, выставив у персонажа положительный Linear Drag. В таком случае персонаж не будет бесконечно ускоряться, его скорость остановится на каком-то значении. Проблема этого метода в том, что у персонажа есть разгон, то есть он не моментально набирает указанную скорость. Опять же, для большинства платформеров такой метод не подойдёт.
И, наконец, вариант с установкой параметра скорости у RigidBody2D:
В таком случае на не нужно будет заботиться о зависимости скорости от fps, скорость по x будет набираться мгновенно, а скорость по y не будет сильно снижаться, потому что мы устанавливаем скорость, а не координату. Единственная проблема – на каком-то форуме я прочитал, что из-за использования такого метода персонаж может передвигаться рвано, но я пока что такого не заметил.