forum.boolean.name

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

IGR 08.10.2007 13:57

EntityDistance между обьектами одного типа
 
type chel
field c_pivot; сфера !!
field c_entity; модель, которая прикреплена к c_pivot !!
end type

ВАРИАНТЫ:

if EntityDistance(s\c_entity,s\c_pivot) < 100 then
...
endif


if EntityDistance(s\c_entity,s\c_entity) < 100 then
...
endif


if EntityDistance(s\c_entity,s\c_entity) < 100 and EntityDistance(s\c_pivot,s\c_pivot)<10 then
...
endif

ну, еще много таких же привести !!

ПРОБЛЕМА:
заключается в том что когда
for s.chel = each chel
.....
next
то EntityDistance ищется для одного и того же обьекта типа !!
т.е. вот это:
if EntityDistance(s\c_entity,s\c_pivot) < 100 then
...
endif
означает условие при которое будет True когда pivot обьекта и его модель будут на дистанции меньше 100, т.е. оно всегда True !!

Ваши идеи по этому поводу ??

H@NON 08.10.2007 14:13

Re: EntityDistance между обьектами одного типа
 
Читать текущий фиелд и предыдущий;)

Значит чтобы найти предыдущий устанавливаем Хендл . Потом считываем его так:

beforepivot = before object.Chel(nameChel)
. И теперь у нас есть ссылка на предыдущий элемент списка. Ну дальше думаю додумаешь(сорри за тафтологию:) ).

H@NON 08.10.2007 15:19

Re: EntityDistance между обьектами одного типа
 
вот передумал и решил тебе предложить сделать так:
Включаем в цикл перебора всех ботов, еще такой же цикл:
for c.chel = each chel
...

for d.chel = each chel
entitydistance(c\entity, d\entity) ...
next
...
next

Вот так сработает, только прийдется оптимайзить если у тебя много таких списков будет, так что используй экономично.

IGR 08.10.2007 15:24

Re: EntityDistance между обьектами одного типа
 
и тогда проверка будет только с предедущим елементом типа !!

IGR 08.10.2007 15:34

Re: EntityDistance между обьектами одного типа
 
Цитата:

вот передумал и решил тебе предложить сделать так:
Включаем в цикл перебора всех ботов, еще такой же цикл:
for c.chel = each chel
...

for d.chel = each chel
entitydistance(c\entity, d\entity) ...
next
...
next

Вот так сработает, только прийдется оптимайзить если у тебя много таких списков будет, так что используй экономично.
понял !! для 10 челов 90 проверок !! :(

tormoz 08.10.2007 16:44

Re: EntityDistance между обьектами одного типа
 
Что-то Булка совсем деградировала
посты, как на ГеймсАнатоми - такие же бредовые и самоуверенные.
Ханон, не знаешь, не делал - не пиши !!!
Сойдешь за умного.

По теме:
Код:

For d.chel = Each chel
  BlaBla(c\entity)
 
Next
.....
Function BlaBla(entity)
For d.chel = Each chel
  If c\entity<>entity
  If EntityDistance(c\entity,entity)<100
    Действие
  EndIf
  EndIf
Next
End Function


IGR 08.10.2007 18:30

Re: EntityDistance между обьектами одного типа
 
о !! tormoz, врубил !!
спасибо !!
если у меня заработает, то я буду very счаслив !!

IGR 09.10.2007 11:58

Re: EntityDistance между обьектами одного типа
 
Вложений: 2
Вотс пример демонстрирующий ярко выраженою кривизну рук !! :wallbash:

Вложение 4854

IGR 09.10.2007 14:25

Re: EntityDistance между обьектами одного типа
 
эй, посмотрите - помогите !! :)
Это всего лиш 14 Кб !!


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

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