Подсчет объектов в Blender BGE на Python. Автор Влад Мурзин

Опубликовано: 24 Июль 2026
на канале: Time Vector
175
21

Автор Влад Мурзин,
Детский технополис и учебный центр "Вектор Времени" г . Анапа http://vektor-vremeni.ru/
Допустим, у нас есть Куб (актёр) и несколько цилиндров (предметов сбора). Нам нужно их подсчитать и вывести счёт на экран. Для этого, для начала, нужно назначить разный материал для актёра и предметов сбора. Поскольку столкновения мы будем обрабатывать именно по материалу. Пусть Куб будет синий, а предметы зелёные. Далее, мы создаём переменную «prop» типа integer, которая будет изменять текстовый объект и подсчитывать количество столкновений:
Создаём сенсор столкновения и через контролёр And подключаем к актуатору Property, в котором состояние Value изменяется при каждом столкновении на единицу. Теперь нам осталось создать сенсор актуатора Property , чтобы отследить изменения и передать на скрипт Python, для отображения на экране в текстовом объекте:
В поле Material сенсора столкновений мы выбираем материал предметов , т.е. зелёный. Сам скрипт выглядит примерно так:

import bge
контр = bge.logic.getCurrentController()
объект = контр.owner
сцена = bge.logic.getCurrentScene() # получить текущую сцену
список = сцена.objects # получить список объектов

текст = список ["Текст"] # получаем текстовый объект
текст.size = 0.5 # меняем размер текста
текст.color = 0, 0.5, 0.5, 1 # меняем цвет текста
текст.text = "0" # меняем сам текст

очки = объект ["prop"] # назначаем переменную
текст.text = str(очки) # конвертируем цифры в строку

Движение самого Куба с помощью клавиатуры сделать не составит труда. Поэтому не буду на этом останавливаться. Желательно, чтобы при столкновении предмет исчезал (чтобы больше не просчитываться). Для этого по очереди выделяем каждый предмет и прописываем удаление его при столкновении с Кубом.
Только не забываем, что в поле Material сенсора, нужно теперь выставить материал Куба, т.е. синий.