Показаны сообщения с ярлыком godot. Показать все сообщения
Показаны сообщения с ярлыком godot. Показать все сообщения
воскресенье, 24 мая 2020 г.
среда, 25 марта 2020 г.
Создание 3D шутера для Android #4 | Godot Engine 3 2 | Настройка сцены, ...
Пользователь ScanerSoft создал очередной видеоурок, кому интересен движок Godot, переходите, там много полезной информации.
пятница, 6 марта 2020 г.
Сделал в догонку пример полосы здоровья с помощью узла ColorRect.
Собственно, самый цимес этого примера - в принципе
расчета цвета для полосы здоровья. Суть в том, что изменение цвета из красного в зеленый, через желтый, требует изменения только двух каналов - R и G. Синий при этом лучше вообще выкрутить в ноль и не трогать. Если подробнее, то градиент выглядит так:
Красный - 1.0, 0.0, 0.0
Желтый - 1.0, 1.0, 0.0
Зеленый - 0.0, 1.0, 0.0
Видно, что первую половину градиента красный остается неизменно равным 1.0, а вторую половину уменьшается до нуля, зеленый же наоборот в первую половину увеличивается до 1.0, а вторую половину остается неизменным. Код, который создает список цветов:
var colorList = []
for i in range(101):
var R = 0.0
var G = 0.0
var B = 0.0
if i > 50:
R = (100 - i)*0.02
G = 1.0
if i < 51:
R = 1.0
G = i * 0.02
colorList.append(Color(R, G, B))
КДПВ:
расчета цвета для полосы здоровья. Суть в том, что изменение цвета из красного в зеленый, через желтый, требует изменения только двух каналов - R и G. Синий при этом лучше вообще выкрутить в ноль и не трогать. Если подробнее, то градиент выглядит так:
Красный - 1.0, 0.0, 0.0
Желтый - 1.0, 1.0, 0.0
Зеленый - 0.0, 1.0, 0.0
Видно, что первую половину градиента красный остается неизменно равным 1.0, а вторую половину уменьшается до нуля, зеленый же наоборот в первую половину увеличивается до 1.0, а вторую половину остается неизменным. Код, который создает список цветов:
var colorList = []
for i in range(101):
var R = 0.0
var G = 0.0
var B = 0.0
if i > 50:
R = (100 - i)*0.02
G = 1.0
if i < 51:
R = 1.0
G = i * 0.02
colorList.append(Color(R, G, B))
КДПВ:
четверг, 5 марта 2020 г.
Сделал стреляющую турельку.
Турельку-то сделал, но пришел к нескольким выводам:
во-первых, художник из меня, прямо скажем, так себе, во-вторых, сколько десятилетий назад была сделана последняя игра с видом сверху? А ведь вращение башен и прочего в косоугольной проекции делается не так.
Собственно сам принцип наведения базируется исключительно на векторах, как и подобные примеры, которые я делал на BGE, тут только вектора в 2D, вот и вся разница. Да и стрельбу с упреждением я не делал, оно стреляет прямой наводкой. Еще побаловался с сигналами, но это надо бы углубить, поскольку не совсем понятно подключение сигналов "на лету", в данном примере, я у каждого самолетика сделал узел-излучатель сигналов. Турель подключалась к этому узлу и заставляла его излучать сигнал, который уже отправлялся к нужному узлу самолета. А хорошо было бы отправить сигнал непосредственно с турели.
Скачать здесь: Turret.7z
понедельник, 10 февраля 2020 г.
Таки добил движение юнитов как в стратегиях...
Хотя уже в процессе пришло понимание, что неплохо бы вообще весь код, отвечающий за отдачу команд, в том числе юнитам, упаковать в отдельный узел, вроде как интерфейс отдельно, мухи сцены/юниты отдельно.
Еще неплохо было бы отправлять юниту не просто координаты точки, куда ему двигаться надо, а приказ, например {'MOVE', Vector2(128.0, 54.0)} или {'ATTACK', 'KinematicBody2D: 1016'} и прочее, типа 'GUARD', 'RETURN_TO_BASE', MOVE_AND_ATTACK', на что фантазии хватит.
Замечу так же, что блок - схемы рулят. Если бы не они, то я еще полгода бы размышлял, как бы это получше организовать.
КДПВ из предыдущего сообщения, в этом смысле существенно ничего не поменялось.
Управление понятно какое, плюс клавиша Shift работает.
Собственно ссылка: Move_TO_ClickII.7z (~400 kB)
Еще неплохо было бы отправлять юниту не просто координаты точки, куда ему двигаться надо, а приказ, например {'MOVE', Vector2(128.0, 54.0)} или {'ATTACK', 'KinematicBody2D: 1016'} и прочее, типа 'GUARD', 'RETURN_TO_BASE', MOVE_AND_ATTACK', на что фантазии хватит.
Замечу так же, что блок - схемы рулят. Если бы не они, то я еще полгода бы размышлял, как бы это получше организовать.
КДПВ из предыдущего сообщения, в этом смысле существенно ничего не поменялось.
Управление понятно какое, плюс клавиша Shift работает.
Собственно ссылка: Move_TO_ClickII.7z (~400 kB)
четверг, 1 августа 2019 г.
Сделал управление юнитом почти как в стратегиях.
Почему почти? Потому что без выделения рамкой. Хотя оно там есть, но мне пока не нравится как работает, надо допиливать.
суббота, 2 марта 2019 г.
Оказывается в Godot уже встроено простое движение по пути.
Причем настолько простое, что я жука дольше рисовал, чем путь настраивал, а рисовал я его буквально тяп-ляп, даже не соблюдая законов жучиной анатомии. Слепил короткий ролик с результатом, для посмотреть, если кому интересно:
Код движения для жука тоже прост до неприличия:
func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
self.offset += 1
Ноу комментс, как говорится...
Код движения для жука тоже прост до неприличия:
func _process(delta):
# # Called every frame. Delta is time since last frame.
# # Update game logic here.
self.offset += 1
Ноу комментс, как говорится...
воскресенье, 3 февраля 2019 г.
Заинтересовался Godot.
Скачал на предмет посмотреть - пощупать. Что можно сказать - 3D я пока особо не трогал, все же изучать лучше начинать с простого, тем более что в самоучителе на их сайте показывают работу на примере двухмерных игр. Что подкупает - встроенный прямо в редактор справочник по API и готовые элементы управления, вроде кнопок и прогресс баров. Ну и конечно Питон-подобный язык скриптов под названием GDScript. Отличия конечно есть, но по большей части то же самое. Если интересно, то можно зайти в ютубе на канал ScanerSoft, там есть хорошего качества уроки и довольно подробные. Ссылка, если что.
В общем, поигравшись с Godot, и немножко с ним разобравшись, решил вспомнить молодость и сделать приложение - часы. Давным-давно, когда я только начинал вникать в азы программирования, я делал свой аналог виджета часов на рабочий стол еще на VisualBasic 6.0. Или уже на VB.Net? Не помню. НО помню, что возился тогда долго, знаний не было, спросить тоже было не у кого. Вот, решил сейчас повторить подвиг, скачал текстуры циферблата и стрелок и за пару часов сделал. Картинка:
В общем, поигравшись с Godot, и немножко с ним разобравшись, решил вспомнить молодость и сделать приложение - часы. Давным-давно, когда я только начинал вникать в азы программирования, я делал свой аналог виджета часов на рабочий стол еще на VisualBasic 6.0. Или уже на VB.Net? Не помню. НО помню, что возился тогда долго, знаний не было, спросить тоже было не у кого. Вот, решил сейчас повторить подвиг, скачал текстуры циферблата и стрелок и за пару часов сделал. Картинка:
Скопипастю код функции, управляющей движением стрелок:
func _process(delta):
var currTime = OS.get_time()
var currSecond = currTime['second']
var secondHand = self.get_node("Second_hand")
secondHand.rotation_degrees = currSecond * 6
var currMinute = currTime['minute']
var minuteHand = self.get_node("Minute_hand")
minuteHand.rotation_degrees = currMinute * 6 + currSecond * 0.1
var currHour = 0
if currTime['hour'] >= 12:
currHour = currTime['hour'] - 12
else:
currHour = currTime['hour']
var hourHand = self.get_node("Hour_hand")
hourHand.rotation_degrees = currHour * 30 + currMinute * 0.5
var currTime = OS.get_time()
var currSecond = currTime['second']
var secondHand = self.get_node("Second_hand")
secondHand.rotation_degrees = currSecond * 6
var currMinute = currTime['minute']
var minuteHand = self.get_node("Minute_hand")
minuteHand.rotation_degrees = currMinute * 6 + currSecond * 0.1
var currHour = 0
if currTime['hour'] >= 12:
currHour = currTime['hour'] - 12
else:
currHour = currTime['hour']
var hourHand = self.get_node("Hour_hand")
hourHand.rotation_degrees = currHour * 30 + currMinute * 0.5
Подписаться на:
Сообщения (Atom)



