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)

ABTOMAT 09.12.2007 22:55

Re: Проверка попадания в бота.
 
Maxxx.!!!., го курить хелп!
HolyDel, твоя идеологически правильнее, моя - адекватнее.
Пример:
У скина 40 костей. Нафига каждому ставить пик мод? ИМХО и мешам хватитю...

tormoz 09.12.2007 23:37

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

Сообщение от Horror
ну можно и создать "оболочку"
НО меня напрягли слова

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

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

Какую еще оболочку ?
ЖжОте
Трудно поставить на модель радиус ?
EntityPickMode entity,1
EntityRadius entity,x,y

Maxxx.!!!. 09.12.2007 23:41

Re: Проверка попадания в бота.
 
Про entityalpha я знаю. EntityRadius я пробовал - он ругается, что не может использовать в этой команде типы.

Код пока не выкину, т.к. исходника под рукой сейчас нет.

ABTOMAT 10.12.2007 00:12

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

Код пока не выкину
Ой не нада!
Кури хелп все вопросы сами собой исчезнут!

IGR 10.12.2007 17:04

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

сделай тутор от импера все поймешь
он очень хороший
+1
и я научился юзайть типы по этому тутору !!

меня тож раньше в дрож бросало от типов !!
но шас я ети типы сую куда попало, везде применяю где только можно !!

Так что Maxxx.!!!., разберись в туторе и будет тебе счастье !! ;)

Maxxx.!!!. 10.12.2007 19:03

Re: Проверка попадания в бота.
 
Не получается

Type TBot
Field Ent
Field Hp
Field EntS
End Type

For i=1 To 10
bt.TBot=New TBot
bt\EntS=CreateSphere (5)
bt\ent=LoadAnimMesh ("Enemy/Bot1.b3d",bt\EntS)
ScaleEntity bt\ent, 0.7,0.7,0.7
ScaleEntity bt\entS, 0.7,0.7,0.7
bt\hp=100
EntityPickMode bt\entS,1
EntityRadius bt\entS,2,2
PositionEntity bt\entS,Rnd(-25,25),2,Rnd(-25,25)
Animate bt\ent,1,0.2
Next

Цикл

pick=CameraPick(cam,MouseX(),MouseY())
For bt.TBot=Each TBot
If MouseHit(2) And pick=bt\entS Then bt\hp=bt\hp-50
If bt\hp<=0 Then FreeEntity bt\entS : FreeEntity bt\ent :Delete bt
Next

Поставил поверх ботов сферы, и все-равно pick не срабатывает. Иногда срабатывет, когда мышь вообще куда-нибудь в пустоту повернута и когда сто раз на нее нажмешь.

Цитата:

Сообщение от IGR
разберись в туторе

Тутор этот я еще давно смотрел. Но эти типу - это ужас. Это же Сишные приколы с этими типами, а сишный синтаксис это ужас. Меня от него в дрожь берет, поэтому я на бейсиках с детства сижу. :) С QB еще начинал, у меня даже сайт про него свой остался: http://quitbasic.narod.ru

tormoz 10.12.2007 22:17

Re: Проверка попадания в бота.
 
MHIT2=MouseHit(2)

For bt.TBot=Each TBot
If MHIT2
pick=CameraPick(cam,MouseX(),MouseY())
If pick=bt\entS
bt\hp=bt\hp-50
endif
endif
If bt\hp<=0 Then FreeEntity bt\entS : FreeEntity bt\ent :Delete bt
Next

ВНИМАНИЕ
MouseHit(2) - применять в коде один раз !!!!!!!!!!
ВСЕ опросы клавиш и мышки делать один раз и сохранять в переменные.

Maxxx.!!!. 10.12.2007 23:28

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

Сообщение от tormoz
MHIT2=MouseHit(2)

For bt.TBot=Each TBot
If MHIT2
pick=CameraPick(cam,MouseX(),MouseY())
If pick=bt\entS
bt\hp=bt\hp-50
endif
endif
If bt\hp<=0 Then FreeEntity bt\entS : FreeEntity bt\ent :Delete bt
Next

Никакого результата.

Maxxx.!!!. 11.12.2007 20:22

Re: Проверка попадания в бота.
 
Никто не знает, в чем дело? Я сделал в точности, как тут говорили. А все-равно pick мерзский не срабатывает.

tormoz 11.12.2007 20:49

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

Maxxx.!!!. 11.12.2007 21:07

Re: Проверка попадания в бота.
 
Вложений: 2
Да я не спорю, что дело в алгоритме. Кстати, когда "стреляешь издалека", то он иногда "попадает" в бота, причем в пик всегда какие-то цифры есть, когда мышь на бота наведена.

Вот исходник.

IGR 11.12.2007 21:08

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

EntityPickMode bt\entS,1
EntityRadius bt\entS,2,2
ты наверно просто НЕ попадаеш в область сферы !!
поставь:EntityPickMode bt\entS,2 и проверь !! ;)
или радиус постав 10000 !! :-)

Maxxx.!!!. 11.12.2007 21:10

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

Сообщение от IGR
ты наверно просто НЕ попадаеш в область сферы !!
поставь:EntityPickMode bt\entS,2 и проверь !! ;)

Еще как попадаю. Переменная, где хранится значение CameraPick, когда мышь наведена на бота, всегда имеет какое-то значение. Так что с этим все впорядке.

H@NON 11.12.2007 21:25

Re: Проверка попадания в бота.
 
тебе же написали, нажатие клавиш хранить в переменных. И вообще в твоем коде получается анимация выстрела проигрывается когда жмешь левую кнопку, а стреляешь когда кликнул на правую кнопку.
Код:

global MHIT2

For bt.TBot=Each TBot
TranslateEntity bt\entS,0,G#,0
If MHIT2;MouseHit(2)
CamP=CameraPick(CAM,MouseX(),MouseY())
;pick=CameraPick(CAM,MouseX(),MouseY())
If CamP=bt\entS
SndPlay(1)
bt\hp=bt\hp-50
EndIf
EndIf
If bt\hp<=0 Then FreeEntity bt\entS : Delete bt
Next
//основной цикл
MHIT2=MouseHit(2)
//энд


Maxxx.!!!. 11.12.2007 22:19

Re: Проверка попадания в бота.
 
H@NON :super: , ты гений. Все заработало. А то я так писал Global MHIT2=MouseHit(2), и ни фига не работало. А сейчас все пашет, но я до сих пор не понимаю, почему не пашет тот вариант, к-й в исходнике. :dontknow:


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

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