Я новичок ie в сценариях Unity3D и пытаюсь узнать, как это работает внутри для моих простых проектов, каковы лучшие практики. Здесь у меня есть простая сцена с кубом в нем, и я пытаюсь его анимировать, переходя влево к определенному моменту времени, затем возвращаясь к отрицательному значению, а затем обратно в l oop (по оси x). Направление задается в булевом свойстве класса publi c. По умолчанию это отрицательное значение (что означает go в положительном направлении, извините за путаницу). Если оно положительное, оно должно go отрицательное. Однако я заметил, что когда я изменяю это логическое значение в методе Update скрипта, оно возвращается к исходному значению? (если установлено значение true, по умолчанию установлено значение false). Тогда мой объект получает стек между истинным и ложным и не движется в любом направлении. Однако если я установлю это свойство как stati c свойство в классе, оно не будет сброшено и будет работать так, как задумано (циклы в порядке). Я не знаю, почему он сбрасывается, и здесь я полностью сбит с толку.
public class CubeAnim : MonoBehaviour
{
public bool directionnegative;
// Update is called once per frame
void Update()
{
float nv = 25.0f * Time.deltaTime;
float posx = transform.position.x;
if (posx > 20.0f)
{
if (!directionnegative)
{
directionnegative = true;
}
}
else if (posx < -20.0f)
{
if (directionnegative)
{
directionnegative = false;
}
}
if(directionnegative)
{
nv = -(nv);
}
transform.Translate(nv, 0, 0);
deltaTime += (Time.deltaTime - deltaTime) * 0.1f;
float fps = 1.0f / deltaTime;
string log = "posx: " + transform.position.x + "\ndir: " + directionnegative + " transx: " + nv + "\nfps: " + Mathf.Ceil(fps).ToString();
Debug.Log(log);
}
}
И если я объявляю directionalgative как stati c Сценарий bool работает нормально, и анимация куба правильно движется в одном направлении, тогда в другом направлении, затем меняет направление:
public static bool directionnegative;