forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Blitz3D (http://forum.boolean.name/forumdisplay.php?f=45)
-   -   Tower defence: башни (http://forum.boolean.name/showthread.php?t=12380)

baton4ik 17.04.2010 01:13

Tower defence: башни
 
Всем привет. Я решил, что лучшее обучение - это ставить себе цели и решать их. Поставил себе цель написать простейший товер дефенс.
Всё, что хотел, реализовал. Осталось последнее и самое главное - башни. Всё ок, но застопорился я вот на этом. Никакой реализации в голову не приходит (может потому, что сейчас 23 часа, не знаю), так что я решил спросить совета на булке.
Каким образом ограничить место, на которое игрок ставит башни (то есть, что б нельзя было ставить на дорогу с мобами и на горы)? Из всех вариантов в голову приходит только сделать такую же модель, как и ланшафт, но без дороги и гор и проверять на пик не с ланшафтом, а с этой второй моделью. Но это, как по мне, плохое решение, к тому же террайн я заливаю хайтмапом.

.Squid 17.04.2010 01:31

Ответ: Tower defence: башни
 
По маске, которая накладывается на весь ландшафт 1 к 1.

Horror 17.04.2010 02:11

Ответ: Tower defence: башни
 
а если у тебя карта это 2мерный массив, то можно
выключить не нужные клетки

Arles 17.04.2010 05:43

Ответ: Tower defence: башни
 
а еще можно уровень разбить на чилды и пикать только нужную часть.

Reizel 17.04.2010 10:17

Ответ: Tower defence: башни
 
дорожку отдельным мешем, пикмод 2, если пикнулас- не ставить

baton4ik 17.04.2010 14:36

Ответ: Tower defence: башни
 
Horror, Arles, Павел, спасибо, но я загружаю террайн хайтмапом, ваши способы не подходят. Павел, я думал об этом, но это большая морока - для каждого уровня делать отдельно дорогу, отдельно горы...

.Squid, маска? В блитце маска ведь только для 2д картинок есть.

FireOwl 17.04.2010 14:41

Ответ: Tower defence: башни
 
Маска - картинка. Например - черное - можно ставить, белое - нельзя. И когда пикаешь по террайну, сверить полученные координаты с соответствующими им координатами на картинке и проверять. Я думаю это имелось ввиду.

IGR 17.04.2010 15:02

Ответ: Tower defence: башни
 
да, маска отличный вариант !! :)
Ну и еще регулярная сетка, хотя это сложней в реализации, но наверн правельней будет !! Если у тя будут башни разные с разными размерами, некоторые будет занимать по нескольео клеток !! Хотя эту же штукус маской тож можно провернуть !! ;)
Вообщем выбирай сам что те больше подходит !!

baton4ik 17.04.2010 15:35

Ответ: Tower defence: башни
 
.Squid, FireOwl, IGR, большое спасибо! Пожалуй я так и сделаю - по маске

baton4ik 17.04.2010 19:02

Ответ: Tower defence: башни
 
Вложений: 1
Вроде основу доделал. Примитивное тд, один тип мобов, один уровень, один тип башен. Запрет на стройку на дороге ещё не ввел, займусь этим потом. Запрет на стройку на горах вводить не буду, так как с гор башни просто не видят мобов.
Но родились 2 глюка. Я, как не пытался, разобраться не смог.
Исходник в аттаче.
Вот и сами глюки:

1. Один снаряд должен отнимать у моба 2хп, у мобов изначально по 4 хп, то есть они должны дохнуть после 2х попаданий. А некоторые не дохнут, а ещё пол-дороги идут, и только где-то в конце пропадают, то бишь дохнут
2. Пули иногда не видно. Видно, что башня стреляет (так как боты дохнут), но пуль не видно

___________________________
Я понял, в чём ошибка. Когда башня 2 раза попадает по мобу, сдыхает первый моб, а не тот, в которого попали. Попытаюсь пофиксить

baton4ik 17.04.2010 21:13

Ответ: Tower defence: башни
 
1ю ошибку я пофиксил заменой стороки "If EntityCollided(tower\bentity,tmob) Or EntityCollided(mob\entity,tb)" (зачем я написал ТАКУЮ строку - не понимаю :) ) на "If EntityCollided(mob\entity,tb)" (ошибка заключалась в том, что, благодаря условию до ифа, удалялся тот моб, на котором шла проверка (то есть любой), а не тот, в которого попали. Корейский рандом :)

2ю ещё не обнаружил. Кстати, пуль не не вино. Их просто нет :) То есть 2я ошибка заключается в том, что башни иногда стреляют, а иногда нет :) Корейский рандом :)

______________________-
update: омг, может не надо было постить? Всё равно, в итоге, все решения я нашёл сам :) Я понял, в чём заклюается 2я ошибка, сейчас буду фиксить
update2: хотя... нет, я не понял, в чём заключается 2я ошибка :) Я думал на то, что пуля не удаляется, если не попадает в моба, но нет, дело не в этом...

baton4ik 17.04.2010 22:55

Ответ: Tower defence: башни
 
2я ошибка решена. Она была в том, что, если пуля башни не попадала по боту, у этой башни больше пули не создавались и в том, что время ожидания (между созданиями пуль, 1с) для всех башен было общим. Заменил btime на tow\btime (добавив это поле в тип) и прописал обновление это времени где нужно. Проблема решена.
Всем читателям моего монолога спасибо :)


Часовой пояс GMT +4, время: 09:01.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot