|
04.06.2010, 09:59
|
#1
|
Разработчик
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений (для 74 пользователей)
|
Ещё одна непонятка...
Через типы создаю мины. Делаю проверку на дистанцию между ботом и миной.
For b.Enemy=Each Enemy
For c.Mine=Each Mine
if EntityDistance( b\model, c\model)<=20 then
FreeEntity b\model
FreeEntity c\model
Delete b
Delete c
EndIf
Next
Next
...И когда уже эти два объекта пресеклись то MAV. А при дебаге Object
Does Not Exist и указывает на строку проверки дистанции. Что надо сделать так, что бы эти два объекта удалялись при пересечении...
__________________
Самый первый и самый великий программист - это Бог.
|
(Offline)
|
|
04.06.2010, 10:05
|
#2
|
Бывалый
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений (для 428 пользователей)
|
Ответ: Ещё одна непонятка...
Блин, как то лень сейчас думать, но мне почему то кажеться что за 1 ты удаляешь или все мины или всех врагов...
|
(Offline)
|
|
04.06.2010, 10:22
|
#3
|
Разработчик
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений (для 74 пользователей)
|
Ответ: Ещё одна непонятка...
Ты знаешь, Igroian, тут ещё вот какая фигня. Ставлю одну мину, бот натыкается - удаляется вместе с миной. Ставлю возле этой же мины ещё одну мину, MAV... Да, и я заметил (помойму), убрать строки
FreeEntity b\model Delete b , то всё нормально , но только удаляет мину...
__________________
Самый первый и самый великий программист - это Бог.
|
(Offline)
|
|
04.06.2010, 11:25
|
#4
|
Бывалый
Регистрация: 17.05.2009
Адрес: Днепропетровск
Сообщений: 672
Написано 180 полезных сообщений (для 428 пользователей)
|
Ответ: Ещё одна непонятка...
Блин прийдется подумать!
Так если рассуждать по логической цепочке то:
Допустим бот - 1, Допустим мин - 2
Каждый бот (1)
Каждая мина(2)
Если бла бла бла то
удалить бота
удалить мина
конец
конец
|
Когда проходить второй повтор у нас бота нету, следовательно проверять нечего, объекта нет, MAV
Решение может быть таким хотя бы:
For b.Enemy=Each Enemy
For c.Mine=Each Mine
If b\model<>0 and c\model<>0 then
if EntityDistance( b\model, c\model)<=20 then
FreeEntity b\model
FreeEntity c\model
Delete b
Delete c
EndIf
endif
Next
Next
|
|
(Offline)
|
|
04.06.2010, 13:30
|
#5
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: Ещё одна непонятка...
WTF??? чё вы делаете??
For b.Enemy=Each Enemy For c.Mine=Each Mine If b\model<>0 and c\model<>0 then if EntityDistance( b\model, c\model)<=20 then FreeEntity b\model;<---убери это! или сделай FreeEntity c\model Delete b Delete c <----тут выход из этого цикла. не помню правда уже как выходить из циклов, но вроде есть такая штука. Exit возможно EndIf endif Next Next
ты удаляешь бота при первом же столкновении с миной! и если мины две, то будет MAV. сделай, если бот попадает на мину, то выходить из перебора мин для даного бота! break; или както так
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо Dream за это полезное сообщение:
|
|
04.06.2010, 16:36
|
#6
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Ещё одна непонятка...
For b.Enemy=Each Enemy
For c.Mine=Each Mine
if EntityDistance( b\model, c\model)<=20 then
FreeEntity b\model
FreeEntity c\model
Delete b
Delete c
Exit
EndIf
Next
Next
__________________
|
(Offline)
|
|
07.06.2010, 19:12
|
#7
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: Ещё одна непонятка...
Exit из какого цикла вынесет?
Из For b.Enemy или For c.Mine или сразу обоих?
А что если, допустим, цикл нужно продолжить для проверки следующих врагов или мин?
|
(Offline)
|
|
07.06.2010, 19:17
|
#8
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Ещё одна непонятка...
Сообщение от LLI.T.A.L.K.E.R.
Exit из какого цикла вынесет?
Из For b.Enemy или For c.Mine или сразу обоих?
А что если, допустим, цикл нужно продолжить для проверки следующих врагов или мин?
|
Из того цикла, который был запущен последним, на сколько я помню.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.
Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2
Скачать Doom 2D: Remake v0.3.8a
|
(Offline)
|
|
07.06.2010, 19:20
|
#9
|
Мастер
Регистрация: 27.01.2008
Адрес: Россия, СКФО, ЧР, Грозный
Сообщений: 1,144
Написано 578 полезных сообщений (для 2,207 пользователей)
|
Ответ: Ещё одна непонятка...
В данном случае, при использовании Exit, закроется цикл For c.mine=each mine
|
(Offline)
|
|
16.06.2010, 09:01
|
#10
|
Разработчик
Регистрация: 02.06.2009
Адрес: Город Герой Ленинград
Сообщений: 392
Написано 33 полезных сообщений (для 74 пользователей)
|
Ответ: Ещё одна непонятка...
Вай бlяяяяяяяяяяяяяяяя!!! Как же я забыл про EXIT!!!. НУ спасибо! А я та думаю...
Ну правильно... У меня были экзамены! Только и делал, что сидел и учил. Спасибо.
__________________
Самый первый и самый великий программист - это Бог.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:41.
|