forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проверка попадания в бота. (http://forum.boolean.name/showthread.php?t=5240)

Maxxx.!!!. 09.12.2007 17:37

Проверка попадания в бота.
 
Такой вопрос. Есть FPS, есть 10 ботов (Bot1, Bot2... Bot9). Как реализовать попадание из оружия в ботов. А как это сделать? Я пробовал LinePick, но он только изредка выдает вместо "0" какие-то цифры, как я понял, это имя объекта, а как его из цифр преобразовать в имя переменной? А можно сделать вот так? Например, создать бокс, который бы повторял радиус и дальность поражения от оружия, привязать его к стволу. А потом проверять на столкновение с ботами, но чтобы он возвращал имя объекта, с которым столкнулся. Только у меня все боты сидят на одном EntityType.

Как бы это все реализовать по-проще. Заранее благодарен.

impersonalis 09.12.2007 17:54

Re: Проверка попадания в бота.
 
http://www.boolean.name/showthread.php?t=15

Horror 09.12.2007 18:03

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


это простой пример и не оч оптимезированный
ну вроде понятный!
ПС писал прям на форуме мог наврать...

Maxxx.!!!. 09.12.2007 18:10

Re: Проверка попадания в бота.
 
Цитата:

Сообщение от Horror
чета не понял у тебя боты это перменые?
жуть)
попробуй с типами

простой пример:

...

Ну, так: Bot1=LoadAnimMesh("zzz")

Меня в дрожь берет от этих типов. Ну ладно, попробую с ними. Но можно этот код и без типов сделать?

Bagration 09.12.2007 18:15

Re: Проверка попадания в бота.
 
Куда ж ты без типов-то... все равно придется их использовать.

Trilliput 09.12.2007 18:26

Re: Проверка попадания в бота.
 
Скажи если тебе 100 ботов понадобяться ты тоже будеш писать bot1,bot2,..bot99,bot100? ручки не отвадяться?

Horror 09.12.2007 18:43

Re: Проверка попадания в бота.
 
ну мошь и массивами
ну типы имхо круче!

сделай тутор от импера все поймешь
он очень хороший

Maxxx.!!!. 09.12.2007 18:49

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. Но, спорить не буду, - типы это весело. Только сложно все это.

tormoz 09.12.2007 19:23

Re: Проверка попадания в бота.
 
EntityPickMode go to help !!!

Maxxx.!!!. 09.12.2007 19:25

Re: Проверка попадания в бота.
 
Цитата:

Сообщение от tormoz
EntityPickMode go to help !!!

Был я в хелпе, все правильно. Толку то. Может с CameraPick что-нибудь?

tormoz 09.12.2007 21:11

Re: Проверка попадания в бота.
 
Блин я тебя не зря в хелп послал
Аниммеш - не меш а контейнер для меша
на него НЕ ставится пицкмоде на полигоны
Нужно перебирать все чайлды и ставить на каждый

а ваще делай обычным радиусом и не мороч голову с полигонами.
пикай по эллипсу (ссответственно и пицкмде на сферу ставь)

Учись работать с типами - это очень просто и эффективно

ABTOMAT 09.12.2007 21:24

Re: Проверка попадания в бота.
 
[blitz]For i= 1 To CountChildren(entity)
Baby = GetChild(entity,i)
EntityPickMode Baby, 2
Next [/blitz]

Цитата:

Меня в дрожь берет от этих типов
Бугага, жжош)) Ты можешь бытро кликами мышки создать 200 врагов? Нет? А я могу) Перебарывай дрожь и кури хелп по типам.

HolyDel 09.12.2007 21:30

Re: Проверка попадания в бота.
 
ABTOMAT, может не прокатить
Function AnimEntityPickMode(aent,mode)
EntityPickMode aent,mode,0
For i=1 To CountChildren(aent)
AnimEntityPickMode(GetChild(aent,i),mode)
Next
End Function
вот так идеологически правильнее.

Maxxx.!!!. 09.12.2007 22:41

Re: Проверка попадания в бота.
 
У меня боты идут одним чайлдом, насколько я помню. Я пробовал в EntityPickMode ставить сферу, но тоже не работало. Т.е. мне надо создать поверх ботов сферу, скрыть ее и по ней проверять Pick?

Horror 09.12.2007 22:51

Re: Проверка попадания в бота.
 
ну можно и создать "оболочку"
НО меня напрягли слова
Цитата:

скрыть ее
ты как скрываешь?
Hideentity ))
если да то так не прокатит)
пиши entityalpha obochka,0

выкинь весь код а то трудно понять , что не таке


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

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