|
3D-программирование Вопросы, касающиеся программирования 3D мира |
09.12.2007, 17:37
|
#1
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Проверка попадания в бота.
Такой вопрос. Есть FPS, есть 10 ботов (Bot1, Bot2... Bot9). Как реализовать попадание из оружия в ботов. А как это сделать? Я пробовал LinePick, но он только изредка выдает вместо "0" какие-то цифры, как я понял, это имя объекта, а как его из цифр преобразовать в имя переменной? А можно сделать вот так? Например, создать бокс, который бы повторял радиус и дальность поражения от оружия, привязать его к стволу. А потом проверять на столкновение с ботами, но чтобы он возвращал имя объекта, с которым столкнулся. Только у меня все боты сидят на одном EntityType.
Как бы это все реализовать по-проще. Заранее благодарен.
|
(Offline)
|
|
09.12.2007, 17:54
|
#2
|
Зануда с интернетом
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений (для 20,935 пользователей)
|
Re: Проверка попадания в бота.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
|
(Offline)
|
|
09.12.2007, 18:03
|
#3
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: Проверка попадания в бота.
чета не понял у тебя боты это перменые?
жуть)
попробуй с типами
простой пример:
Type TBot
field ent ;модель бота
filed hp ; колво жизни
end type
;создаем 10 ботов в случайных позициях:
for i=1 to 10
bt.TBot=new TBot
bt\ent=createcube()
bt\hp=100 ;вначаеле у бото 100 единиц здоровия
entitypickmode bt\ent,2 ;чтобы можно было пикать по ботам
positionentity bt\hp,rnd(-10,10),0,rnd(-10,10)
next
главный цикл:
pick=camerapick(cam,mousex(),mousey())
;перебираем всех ботов
for bt.TBot=each TBot
;если кликнул на мыш и наведена мыш на бота то отнимаем у бота 10 хп
if mousehit(1) and pick=bt\ent then bt\hp=bt\hp-10
;если жизни меньше(равно 0) то уничтожаем бота
if bt\hp<=0 then freeentity bt\ent : delete bt
next
это простой пример и не оч оптимезированный
ну вроде понятный!
ПС писал прям на форуме мог наврать...
|
(Offline)
|
|
09.12.2007, 18:10
|
#4
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Проверка попадания в бота.
Сообщение от Horror
чета не понял у тебя боты это перменые?
жуть)
попробуй с типами
простой пример:
...
|
Ну, так: Bot1=LoadAnimMesh("zzz")
Меня в дрожь берет от этих типов. Ну ладно, попробую с ними. Но можно этот код и без типов сделать?
|
(Offline)
|
|
09.12.2007, 18:15
|
#5
|
Знающий
Регистрация: 06.10.2007
Сообщений: 225
Написано 15 полезных сообщений (для 21 пользователей)
|
Re: Проверка попадания в бота.
Куда ж ты без типов-то... все равно придется их использовать.
|
(Offline)
|
|
09.12.2007, 18:26
|
#6
|
Знающий
Регистрация: 27.07.2006
Сообщений: 250
Написано 6 полезных сообщений (для 7 пользователей)
|
Re: Проверка попадания в бота.
Скажи если тебе 100 ботов понадобяться ты тоже будеш писать bot1,bot2,..bot99,bot100? ручки не отвадяться?
|
(Offline)
|
|
09.12.2007, 18:43
|
#7
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: Проверка попадания в бота.
ну мошь и массивами
ну типы имхо круче!
сделай тутор от импера все поймешь
он очень хороший
|
(Offline)
|
|
09.12.2007, 18:49
|
#8
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Проверка попадания в бота.
Сообщение от Horror
простой пример:
главный цикл:
pick=camerapick(cam,mousex(),mousey())
;перебираем всех ботов
for bt.TBot=each TBot
;если кликнул на мыш и наведена мыш на бота то отнимаем у бота 10 хп
if mousehit(1) and pick=bt\ent then bt\hp=bt\hp-10
;если жизни меньше(равно 0) то уничтожаем бота
if bt\hp<=0 then freeentity bt\ent : delete bt
next
|
Не исчезают боты после того, как у них жизни кончаются. Т.е. pick не работает. Почему?
P.S. Отвечаю всем - ну, у меня не 100 ботов, а 10. Но, спорить не буду, - типы это весело. Только сложно все это.
|
(Offline)
|
|
09.12.2007, 19:23
|
#9
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Проверка попадания в бота.
EntityPickMode go to help !!!
__________________
|
(Offline)
|
|
09.12.2007, 19:25
|
#10
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Проверка попадания в бота.
Сообщение от tormoz
EntityPickMode go to help !!!
|
Был я в хелпе, все правильно. Толку то. Может с CameraPick что-нибудь?
|
(Offline)
|
|
09.12.2007, 21:11
|
#11
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Re: Проверка попадания в бота.
Блин я тебя не зря в хелп послал
Аниммеш - не меш а контейнер для меша
на него НЕ ставится пицкмоде на полигоны
Нужно перебирать все чайлды и ставить на каждый
а ваще делай обычным радиусом и не мороч голову с полигонами.
пикай по эллипсу (ссответственно и пицкмде на сферу ставь)
Учись работать с типами - это очень просто и эффективно
__________________
|
(Offline)
|
|
09.12.2007, 21:24
|
#12
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Re: Проверка попадания в бота.
[blitz]For i= 1 To CountChildren(entity)
Baby = GetChild(entity,i)
EntityPickMode Baby, 2
Next [/blitz]
Меня в дрожь берет от этих типов
|
Бугага, жжош)) Ты можешь бытро кликами мышки создать 200 врагов? Нет? А я могу) Перебарывай дрожь и кури хелп по типам.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
09.12.2007, 21:30
|
#13
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Re: Проверка попадания в бота.
ABTOMAT, может не прокатить
Function AnimEntityPickMode(aent,mode)
EntityPickMode aent,mode,0
For i=1 To CountChildren(aent)
AnimEntityPickMode(GetChild(aent,i),mode)
Next
End Function
вот так идеологически правильнее.
|
(Offline)
|
|
09.12.2007, 22:41
|
#14
|
Нуждающийся
Регистрация: 02.11.2007
Сообщений: 93
Написано 0 полезных сообщений (для 0 пользователей)
|
Re: Проверка попадания в бота.
У меня боты идут одним чайлдом, насколько я помню. Я пробовал в EntityPickMode ставить сферу, но тоже не работало. Т.е. мне надо создать поверх ботов сферу, скрыть ее и по ней проверять Pick?
|
(Offline)
|
|
09.12.2007, 22:51
|
#15
|
Бывалый
Регистрация: 09.09.2006
Сообщений: 656
Написано 54 полезных сообщений (для 110 пользователей)
|
Re: Проверка попадания в бота.
ну можно и создать "оболочку"
НО меня напрягли слова
ты как скрываешь?
Hideentity ))
если да то так не прокатит)
пиши entityalpha obochka,0
выкинь весь код а то трудно понять , что не таке
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:48.
|