Випадково Згенеровані Перешкоди.
Клас Obstacle
керує перешкодами у грі, забезпечуючи їх повторне розміщення після виходу за межі екрану для підтримки безперервного ігрового процесу.
Методи
Метод Start
private void Start()
{
lastObject = startingLastObject;
player = FindAnyObjectByType<PlayerMVT>().transform;
}
Призначення: Ініціалізує останню перешкоду та знаходить трансформ гравця.
Як працює:
lastObject = startingLastObject;
: Встановлює lastObject
на початкову перешкоду, вказану в Інспекторі;
player = FindAnyObjectByType<PlayerMVT>().transform;
: Знаходить трансформ гравця за допомогою методу FindAnyObjectByType
.
Метод OnBecameInvisible
private void OnBecameInvisible()
{
if (player == null) return;
if (transform.position.x >= player.position.x) return;
if (transform == lastObject) return;
Vector2 position = transform.position;
float random = Random.Range(0, 100);
if (random <= 50)
{
position.y = Random.Range(-2, 1);
}
else
{
position.y = Random.Range(15, 18);
}
position.x = lastObject.position.x + Random.Range(6f, 10f);
transform.position = position;
lastObject = transform;
}
Призначення: Змінює розташування перешкоди, коли вона виходить за межі екрану та відповідає певним умовам.
Як це працює:
Скрипт перевіряє наявність гравця перед виконанням (if (player == null) return;
), переконується, що перешкода знаходиться позаду гравця (if (transform.position.x >= player.position.x) return;
), і запобігає повторному переміщенню тієї ж перешкоди (if (transform == lastObject) return;
).
Він отримує поточну позицію перешкоди (Vector2 position = transform.position;
), генерує випадкове число (float random = Random.Range(0, 100);
) і змінює y-координату перешкоди залежно від випадкового числа.
Далі оновлює x-координату відносно останньої перешкоди (position.x = lastObject.position.x + Random.Range(6f, 10f);
) і оновлює lastObject
, щоб посилатися на поточну перешкоду (lastObject = transform;
).
Підсумок
- Ініціалізація: Встановлює початкову останню перешкоду та знаходить гравця;
- Переміщення: Коли перешкода виходить за межі екрану та відповідає певним умовам, вона переміщується на випадкову відстань попереду останньої перешкоди з випадковою висотою;
- Умови: Забезпечує переміщення перешкод лише якщо вони знаходяться позаду гравця і не є тією ж самою перешкодою повторно.
Ця конфігурація забезпечує безперервний потік перешкод у грі, підтримуючи виклик і різноманітність для гравця.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 3.33
Випадково Згенеровані Перешкоди.
Свайпніть щоб показати меню
Клас Obstacle
керує перешкодами у грі, забезпечуючи їх повторне розміщення після виходу за межі екрану для підтримки безперервного ігрового процесу.
Методи
Метод Start
private void Start()
{
lastObject = startingLastObject;
player = FindAnyObjectByType<PlayerMVT>().transform;
}
Призначення: Ініціалізує останню перешкоду та знаходить трансформ гравця.
Як працює:
lastObject = startingLastObject;
: Встановлює lastObject
на початкову перешкоду, вказану в Інспекторі;
player = FindAnyObjectByType<PlayerMVT>().transform;
: Знаходить трансформ гравця за допомогою методу FindAnyObjectByType
.
Метод OnBecameInvisible
private void OnBecameInvisible()
{
if (player == null) return;
if (transform.position.x >= player.position.x) return;
if (transform == lastObject) return;
Vector2 position = transform.position;
float random = Random.Range(0, 100);
if (random <= 50)
{
position.y = Random.Range(-2, 1);
}
else
{
position.y = Random.Range(15, 18);
}
position.x = lastObject.position.x + Random.Range(6f, 10f);
transform.position = position;
lastObject = transform;
}
Призначення: Змінює розташування перешкоди, коли вона виходить за межі екрану та відповідає певним умовам.
Як це працює:
Скрипт перевіряє наявність гравця перед виконанням (if (player == null) return;
), переконується, що перешкода знаходиться позаду гравця (if (transform.position.x >= player.position.x) return;
), і запобігає повторному переміщенню тієї ж перешкоди (if (transform == lastObject) return;
).
Він отримує поточну позицію перешкоди (Vector2 position = transform.position;
), генерує випадкове число (float random = Random.Range(0, 100);
) і змінює y-координату перешкоди залежно від випадкового числа.
Далі оновлює x-координату відносно останньої перешкоди (position.x = lastObject.position.x + Random.Range(6f, 10f);
) і оновлює lastObject
, щоб посилатися на поточну перешкоду (lastObject = transform;
).
Підсумок
- Ініціалізація: Встановлює початкову останню перешкоду та знаходить гравця;
- Переміщення: Коли перешкода виходить за межі екрану та відповідає певним умовам, вона переміщується на випадкову відстань попереду останньої перешкоди з випадковою висотою;
- Умови: Забезпечує переміщення перешкод лише якщо вони знаходяться позаду гравця і не є тією ж самою перешкодою повторно.
Ця конфігурація забезпечує безперервний потік перешкод у грі, підтримуючи виклик і різноманітність для гравця.
Дякуємо за ваш відгук!