Полоски блоков не впритык
| |
KamikazeCorp | Дата: Понедельник, 18.06.2012, 22:18 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
| Приветствую. Юзаю Blitz3D. Столкнулся с проблемой, возможно небольшой, но не понятной мне. У мну в арканоиде несколько полосок блоков, так вот, если размер блока через ScaleEntity изменить, по оси У, например поставить 0.2, то между горизонтальными полосками образуются черные пустоты, если оставить 1, то они впритык друг к другу, как бороться не знаю. И почему-то блоков по Х на 1 больше чем в массиве. Вот код пока что всей программы.
AppWidth=800; shirina ekrana AppHeight=600; visota ekrana
Graphics3D AppWidth,AppHeight,32,2 SetBuffer BackBuffer()
cam=CreateCamera() PositionEntity cam,0,0,-5 svet=CreateLight() PositionEntity svet,-45,45,0 board=CreateSphere() ScaleEntity board,0.8,0.1,0.3 EntityColor board,10,100,255
HidePointer
Type block1 ;tip blocka Field Life ;life blocka End Type
;etalon block block=CreateCube() ScaleEntity block,1,0.2,0.1
;sozdaem blocks Dim MBlocks(4,3) For i=0 To 3 For j=0 To 2 MBlocks(i,j)=CopyEntity(block) PositionEntity MBlocks(i,j),i,j,0 EntityColor MBlocks(i,j),Rnd(0,255),Rnd(0,255),Rnd(0,255) Next Next
;mouse MoveMouse AppWidth/2,AppHeight/2 Repeat mx#=MouseXSpeed()*0.02;*0.02-shag dviga board my#=MouseYSpeed()*0.02 MoveEntity board,mx#,EntityYaw(board)-my#,0
;system UpdateWorld UpdateNormals block UpdateNormals board RenderWorld Flip Until KeyHit(1) End
Сообщение отредактировал KamikazeCorp - Понедельник, 18.06.2012, 22:21 |
|
| |
turBO | Дата: Четверг, 21.06.2012, 19:59 | Сообщение # 2 |
Полковник
Группа: Администраторы
Сообщений: 297
Награды: 5
Репутация: 12
Статус: Offline
| Кто сказал, что блоков по Х на 1 больше? У тебя цикл бежит от 0 до 3. Используй этот код, тебе будет понятнее работа ф-ции ScaleEntity (понажимай клавиши курсора) Code AppWidth=800; shirina ekrana AppHeight=600; visota ekrana
Global scl_width#=1 Global scl_height#=0.2
Graphics3D AppWidth,AppHeight,32,2 SetBuffer BackBuffer()
cam=CreateCamera() PositionEntity cam,0,0,-5 svet=CreateLight() PositionEntity svet,-45,45,0 board=CreateSphere() ScaleEntity board,0.1,0.1,0.1;3 EntityColor board,10,100,255
HidePointer
Type block1 ;tip blocka Field Life ;life blocka End Type
;etalon block block=CreateCube() ScaleEntity block,scl_width,0.2,scl_height
;sozdaem blocks Dim MBlocks(4,3) For i=0 To 3 For j=0 To 2 MBlocks(i,j)=CopyEntity(block) PositionEntity MBlocks(i,j),i,j,0 EntityColor MBlocks(i,j),Rnd(0,255),Rnd(0,255),Rnd(0,255) Next Next HideEntity block ;mouse MoveMouse AppWidth/2,AppHeight/2 Repeat mx#=MouseXSpeed()*0.02;*0.02-shag dviga board my#=MouseYSpeed()*0.02 MoveEntity board,mx#,EntityYaw(board)-my#,0 ;system UpdateWorld UpdateNormals block UpdateNormals board Update_keys() RenderWorld Flip Until KeyHit(1) End
Function Update_keys() If KeyDown(200) Then scl_width=scl_width+.001 If KeyDown(208) Then scl_width=scl_width-.001 If KeyDown(203) Then scl_height=scl_height+.001 If KeyDown(205) Then scl_height=scl_height-.001 For i=0 To 3 For j=0 To 2 ScaleEntity MBlocks(i,j) ,scl_width,scl_height,0.1 Next Next End Function
If 2+2<>4 Then Restart
|
|
| |
KamikazeCorp | Дата: Вторник, 26.06.2012, 00:29 | Сообщение # 3 |
ламер
Группа: Пользователи
Сообщений: 2
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо за пример. Ошибку исправил, сделал следующим образом: Создал тип блока, потом прописал его размеры в константы, а дальше генерировал новые блоки в массиве с учетом размера блоков.
Type Block1 ;tip blocka Field XY Field Life ;life blocka End Type
Const SX#=0.3 Const SY#=0.15 Const SZ#=0.1
;sozdaem blocks
Dim MBlocks(i,j) ;PositionEntity MBlocks(i,j),APP_WIDTH/2,APP_HEIGHT/2,0 For i=0 To 9 For j=0 To 4 Blocks.block1=New Block1 Blocks\XY=CreateCube() ScaleEntity Blocks\XY,SX#,SY#,SZ# PositionEntity Blocks\XY,(SX#*2)*i,(SY#*2)*j,0 EntityColor Blocks\XY,Rnd(0,255),Rnd(0,255),Rnd(0,255)
Next Next
Теперь блоки впритык друг к другу и по Х и по У и размеры не меняются. Возникла другая проблема, как сделать центровку всего этого массива по Х и У относительно экрана? Может сделать ему родителя и заставить стоять относительно родительских координат? Сам родитель будет скрыт и стоять в 0,0,0Добавлено (26.06.2012, 00:29) --------------------------------------------- разобрался, тема закрыта.
Сообщение отредактировал KamikazeCorp - Пятница, 22.06.2012, 12:40 |
|
| |
|