Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 02.10.2013, 20:21   #1
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
условие дистанции для типов

Всем привет!
Подскажите пожалуйста, как бы это исправить чтобы объект сразу двигался, а не ждал пока дистанция станет больше 8? И чтобы действие происходило только один раз..Спасибо.
For a.Zona=Each Zona
If EntityDistance(cam,a\entity)<8 Then
ShowEntity v\alien
PositionEntity v\alien, a\x, a\y+1, a\z
EndIf
PointEntity v\alien ,cam
MoveEntity v\alien ,0,0,.004
Next
(Offline)
 
Ответить с цитированием
Старый 02.10.2013, 22:42   #2
Colossus
Разработчик
 
Аватар для Colossus
 
Регистрация: 12.10.2008
Адрес: Самара
Сообщений: 437
Написано 55 полезных сообщений
(для 92 пользователей)
Ответ: условие дистанции для типов

If EntityDistance(cam,a\entity)<=8
__________________
Пекарня: Intel Core i3 - 3240(3.40Ghz), ram 8 gb, video Gigabyte Nvidia GeForce GTX 650 1gb

Лэптоп : Intel Core i3 - 2365(1.40Ghz), ram 4gb, video Int Intel HD3000(512mb)

Мой набор: 3ds Max 9 + Xors3d(Blitz3d) + Photoshop
(Offline)
 
Ответить с цитированием
Старый 02.10.2013, 23:38   #3
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: условие дистанции для типов

Сообщение от Colossus Посмотреть сообщение
If EntityDistance(cam,a\entity)<=8
Ну дык... всё равно же ждёт. а хотелось бы чтобы сразу бежал
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 00:29   #4
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: условие дистанции для типов

Сообщение от JZ184 Посмотреть сообщение
Ну дык... всё равно же ждёт. а хотелось бы чтобы сразу бежал
добавь к v поле pobejal и на старте сделай его всем v равным нулю, и потом проверять вместо дистанции это поле и если оно ноль то выполнять код и в поле pobejal писать какоенить число не равное 0
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 04:15   #5
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: условие дистанции для типов

Сообщение от dsd Посмотреть сообщение
добавь к v поле pobejal и на старте сделай его всем v равным нулю, и потом проверять вместо дистанции это поле и если оно ноль то выполнять код и в поле pobejal писать какоенить число не равное 0
Чёта я не понял. Добавить поле v\pobejal=0 а в цикле проверять вместо дистанции? Но я спецом создал кубики чтобы проверять дистанцию до них Мож я тут чёто не то нагородил?
Type Zona
Field entity
Field name
Field x#
Field y#
Field z#
End Type
Type Monstr
Field alien
End Type

Zcub=CreateCube()
HideEntity Zcub
For i=1 To 5
a.Zona=New Zona
a\entity=CopyEntity(Zcub)
a\name=1
a\x=-10
a\y=0
a\z=25
PositionEntity a\entity, a\x, a\y, a\z
...............................
..........................
a.Zona=New Zona
a\entity=CopyEntity(Zcub)
a\name=5
a\x=10
a\y=0
a\z=5
PositionEntity a\entity, a\x, a\y, a\z
Next

Vrag=CreateCube()
HideEntity Vrag
v.Monstr=New Monstr
v\alien=CopyEntity(Vrag)
HideEntity v\alien

Repeat

For a.Zona=Each Zona
If EntityDistance(cam,a\entity)<8 Then
ShowEntity v\alien
PositionEntity v\alien, a\x, a\y+1, a\z
EndIf
PointEntity v\alien ,cam
MoveEntity v\alien ,0,0,.004
Next
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 17:39   #6
dsd
Мастер
 
Аватар для dsd
 
Регистрация: 13.06.2011
Сообщений: 1,103
Написано 481 полезных сообщений
(для 1,836 пользователей)
Ответ: условие дистанции для типов

значит тебе просто нужно для выполнения кода проверить два условия дистанцию и значение которое скажет запущен этот v или нет.
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 17:48   #7
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: условие дистанции для типов

Проблема в неправильной организации логики ИИ.
Советую разбить на 2 блока:
1 блок принятия решений - переключение состояний (сплю, стреляю, преследую и тп и тд)
2 блок исполнения - реализуем состояние в действие - двигаемся, стреляем, и тд и тп
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Colossus (04.10.2013)
Старый 03.10.2013, 17:52   #8
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: условие дистанции для типов

Сообщение от JZ184 Посмотреть сообщение
Сообщение от dsd Посмотреть сообщение
добавь к v поле pobejal и на старте сделай его всем v равным нулю, и потом проверять вместо дистанции это поле и если оно ноль то выполнять код и в поле pobejal писать какоенить число не равное 0
Чёта я не понял. Добавить поле v\pobejal=0 а в цикле проверять вместо дистанции? Но я спецом создал кубики чтобы проверять дистанцию до них Мож я тут чёто не то нагородил?
Но вначале ты написал:

чтобы объект сразу двигался, а не ждал пока дистанция станет больше 8
Так что же ты в итоге хочешь?
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 19:05   #9
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: условие дистанции для типов

Сообщение от ABTOMAT Посмотреть сообщение
Но вначале ты написал:
Так что же ты в итоге хочешь?
Вообще то мне надо как здесь для одного.Появляется и гоняется даже если камера в зоне. Обычная вобщем игровая ситуация
Zona=CreateCube()
PositionEntity Zona,0,0,20
Vrag=CreateCube()
PositionEntity Vrag,0,1,20
HideEntity Vrag

While Not KeyHit(1)
If EntityDistance(cam,Zona)<10 Then g=1
If g
ShowEntity Vrag
PointEntity Vrag ,cam
MoveEntity Vrag ,0,0,.1
EndIf
Для одного работает норм
Но для типов у меня не получается правильно написать. Может потому что для одного позиция указывается до цикла, а в типах в цикле...а если указываю позицию при заполнении типа, работает не правильно
Подскажите как исправить, а то с типами такая путаница....
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 19:25   #10
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: условие дистанции для типов

Сообщение от JZ184 Посмотреть сообщение
а то с типами такая путаница....
Вот с этого и надо начинать.
Разобраться как юзать типы.
В помощь: http://blitzetc.ru/
__________________
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 19:57   #11
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: условие дистанции для типов

Сообщение от tormoz Посмотреть сообщение
Вот с этого и надо начинать.
Разобраться как юзать типы.
В помощь: http://blitzetc.ru/
Спасибо. я читал, про типы. там позиция везде рандомно, а мне надо адресно. У меня обьявление и заполнение типов правильно написано? А проверка?
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 20:40   #12
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: условие дистанции для типов

Сообщение от JZ184 Посмотреть сообщение
Спасибо. я читал, про типы. там позиция везде рандомно, а мне надо адресно. У меня обьявление и заполнение типов правильно написано? А проверка?
конечно нет.

For a.Zona=Each Zona 
If EntityDistance(cam,a\entity)<8 Then 
ShowEntity v\alien 
PositionEntity v\alien, a\x, a\y+1, a\z 
EndIf
PointEntity v\alien ,cam
MoveEntity v\alien ,0,0,.004 
Next
откуда взялся v\alien? Ты почему-то решил что в переборе типа Zona будет доступен тип Monstr?
С логикой проблема.
Я ваще не понял чего ты хотел добиться.
Кто за кем должен бежать? по какому условию?
__________________
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 21:18   #13
JZ184
AnyKey`щик
 
Регистрация: 02.10.2013
Сообщений: 6
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: условие дистанции для типов

Сообщение от tormoz Посмотреть сообщение
конечно нет.

For a.Zona=Each Zona 
If EntityDistance(cam,a\entity)<8 Then 
ShowEntity v\alien 
PositionEntity v\alien, a\x, a\y+1, a\z 
EndIf
PointEntity v\alien ,cam
MoveEntity v\alien ,0,0,.004 
Next
откуда взялся v\alien? Ты почему-то решил что в переборе типа Zona будет доступен тип Monstr?
С логикой проблема.
Я ваще не понял чего ты хотел добиться.
Кто за кем должен бежать? по какому условию?
v\alien это поле в Type Monstr(пост#5)....эээ Так что надо делать тип в типе? Да, сплошные проблемы.
Мысль такая. Создаём тип пивотов и раскидываем их в лабиринте(пока это кубики в типе Zona, поскольку пивотов не видно) в цикле Проверяем дистанцию между камерой и пивотом, если меньше указанной, создаём в позиции пивота копию монстра который сразу атакует. А может их всех прописать в один тип?
(Offline)
 
Ответить с цитированием
Старый 03.10.2013, 22:10   #14
tormoz
Гигант индустрии
 
Аватар для tormoz
 
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений
(для 4,437 пользователей)
Ответ: условие дистанции для типов

Так и делай КАК ты написал:
Перебирай пивоты, если пора - создавай монстра, ставь в координаты пивота и "выключай" пивот (чтобы монстры не создавались в цикле каждый проход)
А уже в отдельном цикле перебора монстров командуй ими.
И лучше разбей все на функции (создание, перебор и тд) и вызывай когда надо
__________________
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com