P
P
Pavel23452022-04-14 19:22:03
C++ / C#
Pavel2345, 2022-04-14 19:22:03

How to return a variable?

I know the question is not difficult, but I was puzzled ... How to return a variable using the example of the speed of an object? Let's say there is a variable float speed = 5; In the Run() method, it will be 5. In the Walk() method, I want it to be 3. Upon returning to the Run() method, again 5. But is it possible to do it somehow without being tied to numbers?

Answer the question

In order to leave comments, you need to log in

3 answer(s)
V
Vasily Bannikov, 2022-04-14
@Pavel2345

Store the old value in some temporary variable and return to it when some new event occurs.
If there are many events that can overwrite, you can try to write to the stack.
In your case, I would make two separate variables - walking speed and running speed.
And the actual speed would be determined through a property in which there will be a condition like "if the current state is running, then return the running speed. Otherwise, the walking speed"

R
rPman, 2022-04-14
@rPman

The following does not apply specifically to unity, but to all other ways of implementing this task.
You have a slightly wrong approach when it comes to creating a game.
The fact is that if you subtract and add a value to the speed everywhere in the code, you can pile up a bunch of errors in the code when there are a lot of such places, and it will also be difficult to add more complex behavior.
Логичнее и красивее для реализации, в классе, описывающем персонажа (а наверное лучше базового объекта живых существ в игре, ведь теми же свойствами могут обладать и монстры) определить состояние - ходьба, бег (а в будущем можно будет добавить к примеру - красться) и отдельно переменная - скорость в процентах либо boolean переменная - движение. Для каждого состояния класс должен описывать (виртуальные методы. возвращающие значение) скорость, с которой персонаж может двигаться соответственно ему текущему состоянию. И главное, текущая скорость это не переменная, а метод, который будет проверять состояние и возвращать вычисленную скорость.
Да, это очень не эффективно, каждый раз, при запросе скорости, ее заново вычислять, но если все изменения состояний и переменных, участвующих в вычислении этой скорости, менять так же методами (или геттером/сеттером), то в этих методах можно вызывать метод вычисления скорости а основной метод пусть возвращает сохраненное значение (читай кешировать вычисление скорости и отслеживать ее изменение)

F
freeExec, 2022-04-14
@freeExec

Две переменный, как тут советуют, это хороший подход.
Но я бы выбрал путь коэффициента снижения/увеличения для ходьбы/бега.

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question