|
3D-программирование Вопросы, касающиеся программирования 3D мира |
05.03.2013, 00:34
|
#1
|
AnyKey`щик
Регистрация: 05.03.2013
Сообщений: 12
Написано 0 полезных сообщений (для 0 пользователей)
|
Clearworld
Я учусь Блитцу ради своего удовольствия и до создания игр вряд ли дойду.
Но тем не менее прошу помощи в следующем.
Необходимо удалить предыдущий куб состоящий из шаров, после создания следующего. Не могу найти место в цикле для Clearworld, либо не понимаю его функционал.
Спасибо.
Graphics3D 640, 480, 16
c = CreateCamera()
l = CreateLight()
PositionEntity c, 300,300,-300
RotateEntity c, 45,45,0
Ox = CreateCube()
PositionEntity Ox, 0,0,0
ScaleEntity Ox, 1000,1,1
EntityColor Ox, 255,255,255
Oy = CreateCube()
PositionEntity Oy, 0,0,0
ScaleEntity Oy, 1,1000,1
EntityColor Oy, 255,255,255
Oz = CreateCube()
PositionEntity Oz, 0,0,0
ScaleEntity Oz, 1,1,1000
EntityColor Oz, 255,255,255
e1=-1
e2=-1
e3=-1
m1=1
m2=1
m3=1
While Not KeyDown(1)
RenderWorld
UpdateWorld
For x=e1 To m1
For y=e2 To m2
For z=e3 To m3
s = CreateSphere(20)
PositionEntity s,x*2, y*2, z*2
EntityColor s, Rnd(255),Rnd(255),Rnd(255)
Next
Next
Next
e1=e1+1
m1=m1+1
e2=e2+1
m2=m2+1
e3=e3-1
m3=m3-1
Flip
Wend
End
|
(Offline)
|
|
05.03.2013, 10:42
|
#2
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Clearworld
ClearWorld удаляет все ранее созданные entity - кубы которые ты создал до начала цикла тоже удалятся. Его надо ставить перед созданием новых сфер UpdateWorld и RenderWorld лучше перед флипом воткнуть. Кусок кода с циклом:
While Not KeyDown(1)
ClearWorld
For x=e1 To m1
For y=e2 To m2
For z=e3 To m3
s = CreateSphere(20)
PositionEntity s,x*2, y*2, z*2
EntityColor s, Rnd(255),Rnd(255),Rnd(255)
Next
Next
Next
e1=e1+1
m1=m1+1
e2=e2+1
m2=m2+1
e3=e3-1
m3=m3-1
UpdateWorld
RenderWorld
Flip
Wend
|
(Offline)
|
|
08.03.2013, 16:40
|
#3
|
AnyKey`щик
Регистрация: 05.03.2013
Сообщений: 12
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Clearworld
Спасибо, но не помогло. Black screen
|
(Offline)
|
|
08.03.2013, 16:53
|
#4
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Clearworld
ага, ClearWorld удаляет все entity - в том числе и камеру и свет... их или в цикле заново пересоздавать надо, или не использовать ClearWorld вообще.
Лучше сделать трехмерный массив и сохранять туда созданные сферы, попутно удаляя предыдущие...
|
(Offline)
|
|
08.03.2013, 17:01
|
#5
|
AnyKey`щик
Регистрация: 05.03.2013
Сообщений: 12
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Clearworld
Ок. До массивов я еще не дозрел. А нет команды удаляющий определенный entity?
|
(Offline)
|
|
08.03.2013, 17:16
|
#6
|
☭
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений (для 2,707 пользователей)
|
Ответ: Clearworld
FreeEntity
|
(Offline)
|
|
08.03.2013, 17:20
|
#7
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Clearworld
FreeEntity - удаляет
Вот код с массивами и удалением:
Graphics3D 640, 480, 16, 2
SetBuffer BackBuffer()
c = CreateCamera()
l = CreateLight()
PositionEntity c, 300,300,-300
RotateEntity c, 45,45,0
Ox = CreateCube()
PositionEntity Ox, 0,0,0
ScaleEntity Ox, 1000,1,1
EntityColor Ox, 255,255,255
Oy = CreateCube()
PositionEntity Oy, 0,0,0
ScaleEntity Oy, 1,1000,1
EntityColor Oy, 255,255,255
Oz = CreateCube()
PositionEntity Oz, 0,0,0
ScaleEntity Oz, 1,1,1000
EntityColor Oz, 255,255,255
;Смещение для новых сфер по осям
Global dx,dy,dz
;Массив сфер 3х3х3
Dim Spheres(2,2,2)
While Not KeyDown(1)
For x=0 To 2
For y=0 To 2
For z=0 To 2
;Если сфера уже есть, то удаляем
If Spheres(x,y,z)>0 Then FreeEntity Spheres(x,y,z)
Spheres(x,y,z) = CreateSphere(20)
PositionEntity Spheres(x,y,z),x*2+dx, y*2+dy, z*2+dz
EntityColor Spheres(x,y,z), Rnd(255),Rnd(255),Rnd(255)
Next
Next
Next
;Измениние смещения сфер
dx=dx+1:dy=dy+1:dz=dz-1
UpdateWorld
RenderWorld
Flip
Wend
|
(Offline)
|
|
08.03.2013, 17:26
|
#8
|
AnyKey`щик
Регистрация: 05.03.2013
Сообщений: 12
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Clearworld
а им можно указать координаты Entity, который нужно удалить?
|
(Offline)
|
|
08.03.2013, 18:23
|
#9
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: Clearworld
Нет, он работает по "ссылке" на объект. Когда создаешь сферу, присваивается числовое значение переменной - через эту переменную и происходит управление, в том числе и удаление... В данном случае это значение присвивается элементу массива Spheres(x,y,z).
|
(Offline)
|
|
08.03.2013, 20:18
|
#10
|
AnyKey`щик
Регистрация: 05.03.2013
Сообщений: 12
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Clearworld
Спасибо большое!
чуточку бы мне ваших мозгов
|
(Offline)
|
|
13.03.2013, 10:26
|
#11
|
Нуждающийся
Регистрация: 10.06.2012
Сообщений: 66
Написано 6 полезных сообщений (для 9 пользователей)
|
Ответ: Clearworld
berdges, здесь найдешь много полезного, про базовые понятия, такие как фри ентити там расписано много чего.
|
(Offline)
|
|
13.03.2013, 18:41
|
#12
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Clearworld
__________________
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 08:48.
|