void ChangeState() { switch (TargetingState) { case ETargetingState.NotActive: TargetingState = ETargetingState.HorizontalTargeting; CurrentDirection = E2DDirection.Left; break; case ETargetingState.HorizontalTargeting: TargetingState = ETargetingState.VerticalTargeting; CurrentDirection = E2DDirection.Up; break; case ETargetingState.VerticalTargeting: TargetingState = ETargetingState.TargetResolved; EndTargeting(); break; case ETargetingState.TargetResolved: TargetingState = ETargetingState.NotActive; break; } }
void HorizontalTargeting() { int direction = 0; // Можем двигаться только влево и вправо. direction опредеяет направление своим знаком if (CurrentDirection == E2DDirection.Left) { direction = -1; } else if (CurrentDirection == E2DDirection.Right) { direction = 1; } else { return; } Vector3 shift = new Vector3(CrossSpeed * direction * Time.deltaTime, 0, 0); transform.position += shift; // Достигли левой границы зоны прицеливания - меняем направление if (transform.position.x <= LeftTargetingBorder.position.x) { CurrentDirection = E2DDirection.Right; transform.position = new Vector3(LeftTargetingBorder.position.x, transform.position.y, transform.position.z); } // Достигли правой границы зоны прицеливания - меняем направление if (transform.position.x >= RightTargetingBorder.position.x) { CurrentDirection = E2DDirection.Left; transform.position = new Vector3(RightTargetingBorder.position.x, transform.position.y, transform.position.z); } }
void VerticalTargeting() { int direction = 0; // Можем двигаться только вверх и вниз. direction опредеяет направление своим знаком if (CurrentDirection == E2DDirection.Down) { direction = -1; } else if (CurrentDirection == E2DDirection.Up) { direction = 1; } else { return; } Vector3 shift = new Vector3(0, CrossSpeed * direction * Time.deltaTime, 0); transform.position += shift; // Достигли нижней границы зоны прицеливания - меняем направление if (transform.position.y <= DownTargetingBorder.position.y) { CurrentDirection = E2DDirection.Up; transform.position = new Vector3(transform.position.x, DownTargetingBorder.transform.position.y, transform.position.z); } // Достигли верхней границы зоны прицеливания - меняем направление if (transform.position.y >= TopTargetingBorder.position.y) { CurrentDirection = E2DDirection.Down; transform.position = new Vector3(transform.position.x, TopTargetingBorder.position.y, transform.position.z); } }