|
3D-программирование Вопросы, касающиеся программирования 3D мира |
05.06.2011, 08:27
|
#16
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
А ты что экзамены сдаешь? У меня так например матан 6-ого.
|
не, я параллельно Двиг на С пишу,ОСь исправляю....
Вот
А ещё могу предложить такое:
"есть ямы на карте - т.е. пустое место где должен быть пол, и на один уровень ниже дно.
Будет добавлена логика - столкнуть в яму блок, чтобы проложить проход."
===
|+| << Блок
===___ . . _____
~~~~~~| _ |~~~~
--------------------
----------/\--------
------- ЯМКА -----
|
по такому рецепту собрал(ща спец без ехешника). Вложение 13927
там лажа в коде большая,пол составлен из квадров,но объединить не получается... ,надо идейки подкинуть....
Последний раз редактировалось RegIon, 10.06.2011 в 05:53.
|
(Offline)
|
|
06.06.2011, 10:35
|
#17
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
Вложение 13935 с добавленным динамитом,можно только брать
Последний раз редактировалось RegIon, 10.06.2011 в 05:53.
|
(Offline)
|
|
07.06.2011, 08:27
|
#18
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
не могу исправить ошибку,подкинте идеи....надо мне ведать переписать UPdate...вылетает при "взрыве" динамита(динамит ставить на пробел),что если рядом есть кирпичная стена,что даже если нету... Ткните носом в ошибку
Последний раз редактировалось RegIon, 10.06.2011 в 05:53.
|
(Offline)
|
|
07.06.2011, 11:01
|
#19
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: СОКОБАН в 3d
If EntityDistance(a\blok,Bomb_e(n))<3
FreeEntity Bomb_e(n):FreeEntity a\blok:Delete a
Else
FreeEntity Bomb_e(n)
EndIf
Entity doesnot exist. В строке FreeEntity Bomb_e(n). А так же в любом месте фукнции Update, где используется Bomb_e(n). Сейчас пока время есть - поковыряюсь в коде, может исправлю чего нибудь.
учись структурировать код, пригодится... я пока нашёл начало цикла чуть не опух
UPD у тебя массив из 10 элементов, а ты в цикле For n = 0 to 10 перечисляешь 11. Вот и ошибка.
лови слегка переделанный твой код. Работоспособный, отструктурированый
Const wall_t=1,dwall_t=2,blok_t=3,but_t=4,door_t=5,bmb_t=6,play_t=7,def_t=8
Const UPS=60
Global herox%,heroz%
Global Bomb%=1
;Global Timer%=0
;меши
Global wallS_
Global but_
Global Kol_
Global Blok_
Global Plane
Global Floor1
Global Brick
Global Player
Global din_b
Global din_
;анимация
Global run;
Global nor
;для отладки
Global new_id%
Global teg=0
Global ent = 1
con_op=1
Graphics3D 0,0,0,1
SetBuffer BackBuffer()
Light=CreateLight()
TurnEntity light,90,0,0
cam=CreateCamera()
PositionEntity cam,0,30,0
TurnEntity cam,90,0,0
Dim aMap$(1000,1000);***нужно
Dim Bomb_e(10)
Dim timer(10);
For i=0 To 10
Bomb_e(i)=0:timer(i)=0
Next
LoadMap(1)
din_inc=LoadImage("Models\din_inc.bmp")
;num=LoadAnimImage("models\BigNumber.png",100,100,0,10)
font=LoadFont("Tahoma",40,1,0)
CreateMap("map\1map.map",21,2)
PositionEntity Player,herox,-.2,heroz
Collisions play_t,dwall_t,3,2
Collisions play_t,door_t,2,2
Collisions play_t,wall_t,2,2
Collisions play_t,blok_t,3,2
Collisions blok_t,wall_t,3,2
Collisions blok_t,blok_t,3,2
;*******************
period=1000/UPS
time=MilliSecs()-period
Repeat
Repeat
elapsed=MilliSecs()-time
Until elapsed
ticks=elapsed/period
tween#=Float(elapsed Mod period)/Float(period)
For k=1 To ticks
time=time+period
;*********************
update(Player,cam)
;PointEntity cam,player
;****************
If KeyHit(1) End
UpdateWorld
Next
RenderWorld tween
SetFont(font):Color 216,220,29
DrawImage din_inc,40,40
Text 70,130,Bomb,1,1
Flip
Forever
Type map
Field blok
Field chaild%=0
Field id%=0
Field Stat=0
End Type
Function LoadMap(SetHero%=1)
din_=LoadMesh("models\din.3ds"):HideEntity din_;динамит
din_b=LoadMesh("models\d_box.3ds"):ScaleEntity din_b,0.5,0.5,.5;ящик динамита
Blok_=LoadMesh("models\model1.3DS"):PositionMesh Blok_,0,.2,0;Блок
Kol_=LoadMesh("Models\Model2.3ds"):ScaleEntity Kol_,1.15,1.3,1.15; кол-дверь
Kol_t=LoadTexture("Models\Tile1.jpg",1+64) :EntityTexture Kol_,Kol_t
wallS_=LoadMesh("models\model3.3DS"):ScaleEntity wallS_,2,4,2;стена(сменить текстуру)
but_=LoadMesh("models\model4.3ds");кнопка(доделать текстуру)
Floor1=LoadTexture("models\Floor1.jpg");трава типо(безшовка)
Brick=LoadTexture("models\brick.jpg");кирпичная стена
Player=LoadAnimMesh("models\p_boy.3ds"); игрок
EntityType Player,play_t
If SetHero=0 HideEntity Player
EntityRadius Player,.6
run=ExtractAnimSeq(Player,1,40)
nor=ExtractAnimSeq(Player,0,0)
End Function
Function CreateMap(map$,size%,blok_s#,x%=0,y%=0)
Local mapSize% = size%-1
Local filein = ReadFile(map)
Local mapLines = 1
While Not Eof(filein)
Local mapStr$ = ReadLine$( filein )
For i=1 To mapSize
aMap$(mapLines,i)=Upper(Str(Trim(Mid(mapStr,i,1 ))))
Next
mapLines = mapLines + 1
Wend
CloseFile(filein)
Local plane_p=createQuad()
HideEntity plane_p
PositionEntity plane_p,0,-5,0
Local cub=CreateCube();---------
ScaleEntity cub,Float(blok_s/2),Float(blok_s/2),Float(blok_s/2)
For j=1 To mapSize
For i=1 To mapSize
a.map=New map
If aMap(j,i)<>"_" And aMap(j,i)<>"1" And aMap(j,i)<>"2"
Plane=createQuad()
PositionEntity Plane, i*blok_s-mapSize+x, -1, -j*blok_s+mapSize+y
AddMesh Plane,plane_p;не объединяет меши,утечка памяти
EntityType Plane,def_t
EntityTexture Plane,Floor1
;FreeEntity Plane
EndIf
Select aMap(j,i)
Case "S";обычная
Local endB=CopyEntity(cub)
PositionEntity endB, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityColor endB,135,150,250
Case "1";обычная
a\blok=CopyEntity(wallS_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,wall_t
Case "2";кирпич
a\blok=CopyEntity(cub)
EntityTexture a\blok,Brick
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,dwall_t
a\stat=0
Case "3";игрок
herox=-i*blok_s+mapSize
heroz=-j*blok_s+mapSize
Case "4";блок
a\blok=CopyEntity(Blok_)
PositionEntity a\blok, i*blok_s-mapSize+x, .1, -j*blok_s+mapSize+y
EntityBox a\blok,-.8,-.8,-.8,1.6,1.6,1.6
EntityRadius a\blok,0.8
EntityPickMode a\blok,3
EntityType a\blok,blok_t
a\stat=0
;EntityColor a\blok,9,52,183
Case "5","6","7","8","9";кнопки
a\blok=CopyEntity(but_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,but_t
a\stat=0
EntityColor a\blok,255,0,128
Select aMap(j,i)
Case "5" a\chaild=1
Case "6" a\chaild=2
Case "7" a\chaild=3
Case "8" a\chaild=4
Case "9" a\chaild=5
End Select
Case "A","B","C","D","E";двери
a\blok=CopyEntity(Kol_)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,door_t
a\stat=0
Select aMap(j,i)
Case "A" a\id=1
Case "B" a\id=2
Case "C" a\id=3
Case "D" a\id=4
Case "E" a\id=5
End Select
Case "_"
;мешь дырка с кольями
Case "X";динамит
a\blok=CopyEntity(din_b)
PositionEntity a\blok, i*blok_s-mapSize+x, 0, -j*blok_s+mapSize+y
EntityType a\blok,bmb_t
a\stat=0
End Select
Next
Next
HideEntity cub
HideEntity Kol_
HideEntity wallS_
HideEntity Kol_
HideEntity Blok_
HideEntity but_
HideEntity din_b
End Function
Global speed#=.1
Function update(hero%,camera%)
Local n%
If KeyDown(200) And (Not (KeyDown(205) Or KeyDown(203))) TranslateEntity hero,0,0,speed#:moveto=1;up
If KeyDown(208) And (Not (KeyDown(205) Or KeyDown(203))) TranslateEntity hero,0,0,-speed#:moveto=2;down
If KeyDown(205) And (Not (KeyDown(208) Or KeyDown(200))) TranslateEntity hero,speed#,0,0:moveto=3;right
If KeyDown(203) And (Not (KeyDown(208) Or KeyDown(200))) TranslateEntity hero,-speed#,0,0:moveto=4;left
PositionEntity hero,EntityX(hero),-.2,EntityZ(hero)
If (KeyDown(200) Or KeyDown(208) Or KeyDown(203) Or KeyDown(205))=0 moveto=0
Select moveto
Case 1
RotateEntity hero,0,0,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),0,0,.8)
Case 2
RotateEntity hero,0,180,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),0,0,-.8)
Case 3
RotateEntity hero,0,270,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),.8,0,0)
Case 4
RotateEntity hero,0,90,0
piced=LinePick(EntityX(hero),0.5,EntityZ(hero),-.8,0,0)
End Select
speed=.1
For m=0 To 10
If Bomb_e(m)<>0 timer(m)=timer(m)-1
Next
For a.map=Each map
If a\blok<>0
If GetEntityType(a\blok)=but_t
If a\stat=0
p=LinePick(EntityX(a\blok),-1,EntityZ(a\blok),0,3,0)
If p<>0
If GetEntityType(p)=blok_t
new_id%=a\chaild
a\stat=1
EndIf
EndIf
EndIf
EndIf
If piced<>0
If piced=a\blok
speed#=0.05
Select moveto
Case 1:TranslateEntity a\blok,0,0,speed
Case 2:TranslateEntity a\blok,0,0,-speed
Case 3:TranslateEntity a\blok,speed,0,0
Case 4:TranslateEntity a\blok,-speed,0,0
End Select
EndIf
EndIf
If new_id%>0
If new_id%=a\id a\stat=1
EndIf
If a\stat=1 And GetEntityType(a\blok)=door_t HideEntity a\blok
;бомбы****
If GetEntityType(a\blok)=dwall_t
For n=0 To ent-1
If Bomb_e(n)
If timer(n)=0
If EntityDistance(a\blok,Bomb_e(n))<3
FreeEntity Bomb_e(n):FreeEntity a\blok:Delete a
ent = ent - 1
Else
FreeEntity Bomb_e(n)
ent = ent - 1
EndIf
EndIf
EndIf
Next
Else If GetEntityType(a\blok)=bmb_t
TurnEntity a\blok,0,4,0
If EntityDistance(Player,a\blok)<1 And Bomb<10 FreeEntity a\blok:Delete a:Bomb=Bomb+5
EndIf
EndIf
Next
If KeyHit(57) And Bomb>0
Bomb_e(ent)=CopyEntity(din_)
PositionEntity Bomb_e(ent),EntityX(hero),.7,EntityZ(hero)
ShowEntity Bomb_e(ent)
Bomb=Bomb-1
timer(ent)=200
ent=ent+1
EndIf
If Bomb>10 Bomb=10
End Function
Function createQuad()
quad=CreateMesh()
s=CreateSurface(quad)
v0=AddVertex(s,-1,0,1,0,0)
v1=AddVertex(s,1,0,1,0,1)
v2=AddVertex(s,1,0,-1,1,1)
v3=AddVertex(s,-1,0,-1,1,0)
AddTriangle(s,v0,v1,v2)
AddTriangle(s,v0,v2,v3)
UpdateNormals quad
Return quad
End Function
;эть,незнаю как удалять Типы
Function FreeMap()
For a.map=Each map
FreeEntity a\blok
Next
FreeEntity Plane
End Function
__________________
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)
|
|
Эти 2 пользователя(ей) сказали Спасибо St_AnGer за это полезное сообщение:
|
|
07.06.2011, 11:07
|
#20
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
учись структурировать код, пригодится... я пока нашёл начало цикла чуть не опух
|
он в самом начале,чтоб меньше проходов по типу было,но вариант глючный,тут: Вложение 13945 уже не так чуть-чуть(исправил косяк делением цикла типа на куски....)
Последний раз редактировалось RegIon, 10.06.2011 в 05:53.
|
(Offline)
|
|
07.06.2011, 11:11
|
#21
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
и вопрос,почему у меня дёргается(причем через каждые 60 проходов),отлаживаешь видно что конкретно тупит......
|
(Offline)
|
|
07.06.2011, 11:12
|
#22
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: СОКОБАН в 3d
Сообщение от Костян
и вопрос,почему у меня дёргается(причем через каждые 60 проходов),отлаживаешь видно что конкретно тупит......
|
хм... у меня на нэтбуке всё нормально, никаких дёрганий.
__________________
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.2011, 11:17
|
#23
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
хм... у меня на нэтбуке всё нормально, никаких дёрганий.
|
у всех нормально,у меня дёргается.....корректор FPS закоментировал-всё равно дёргается...
|
(Offline)
|
|
07.06.2011, 11:22
|
#24
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: СОКОБАН в 3d
Сообщение от Костян
у всех нормально,у меня дёргается.....корректор FPS закоментировал-всё равно дёргается...
|
Что в твоём понятии дёргается? Пропускает кадры или тупо тормозит?
И что за железо у тебя? Хотя этот вопрос скорее всего неуместен - слабее моего нэтбука почти ни у кого ничего нету наверно уже а на нём всё нормально пашет.
__________________
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.2011, 11:30
|
#25
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
Пропускает кадры или тупо тормозит?
|
да, игрока двигаешь,тык,встал он на долю секунды и тут же перескочил далёко,может через всё поле сразу....
Система
Microsoft
ZverCD v9.12.2
Intel(R)
Celeron(R) CPU 2.80GHz
2.79 ГГц, 1,00 ГБ ОЗУ
надо тоже на буке проверить,он мощней....
|
(Offline)
|
|
07.06.2011, 11:37
|
#26
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: СОКОБАН в 3d
Сообщение от Костян
Система
Microsoft
ZverCD v9.12.2
Intel(R)
Celeron(R) CPU 2.80GHz
2.79 ГГц, 1,00 ГБ ОЗУ
надо тоже на буке проверить,он мощней....
|
ды у меня ёжик послабее - проц atom 1.6 GHz, видео вообще практически отсутствует, и памяти 1 Гб. Так что думаю смысла проверять нету, что то не так в системе скорее всего, так как код у меня работает отлично при любом виде (с стабилизацией фпс и без неё). У тебя наверно несчастный проц чем то загружен на 200%
__________________
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.2011, 11:48
|
#27
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: СОКОБАН в 3d
ды у меня ёжик послабее - проц atom 1.6 GHz, видео вообще практически отсутствует, и памяти 1 Гб. Так что думаю смысла проверять нету, что то не так в системе скорее всего, так как код у меня работает отлично при любом виде (с стабилизацией фпс и без неё). У тебя наверно несчастный проц чем то загружен на 200% :)
даже аимп вырубил(когда он работает портал троит),смотрю...SvShost 80% жрёт....достал он меня,глушишь его,больше одного процесса в реалтаим не ту
|
(Offline)
|
|
08.06.2011, 13:38
|
#28
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
СОКОБАН в 3d
Во,добавил кВадровое меню(еб**я с ним долго),работают только "играть" и "выход",опций пока нету... повесил наконец анимацию ходьбы(надо ещё когда толкает и кидает динамит),камера правда очень не удобно стоит(для отладки так),но так красивей...вот:
Вложение 13958
только блин влом карты строить...
__осталось сделать:
анимации чела доделать
меши добавить
сменить нафиг текстуры
добавить меню главное
добавить опции
правильный лоадер карт и карты
отловить баги
протестить....
куды-нить деть...
Последний раз редактировалось RegIon, 10.06.2011 в 05:53.
|
(Offline)
|
|
08.06.2011, 14:06
|
#29
|
Знающий
Регистрация: 01.04.2011
Адрес: Екатеринбург
Сообщений: 232
Написано 48 полезных сообщений (для 82 пользователей)
|
Ответ: СОКОБАН в 3d
Сообщение от St_AnGer
ды у меня ёжик послабее - проц atom 1.6 GHz, видео вообще практически отсутствует, и памяти 1 Гб. Так что думаю смысла проверять нету, что то не так в системе скорее всего, так как код у меня работает отлично при любом виде (с стабилизацией фпс и без неё). У тебя наверно несчастный проц чем то загружен на 200%
|
У меня ваще неттоп 1,6GHz, NVIDIA ION graphic (Full HD Video 1080p),2ГБоперативка и не виснет
|
(Offline)
|
|
09.06.2011, 02:22
|
#30
|
Мастер
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений (для 504 пользователей)
|
Ответ: СОКОБАН в 3d
Эх стёрлось сообщение
В общем классный человечек и анимация.
Сделай 2 вида обзора (камеры):
Главный экран 3Д игра, в мини окошке вид сверху (или наоборот)
А на выбор игрока: отключить какую либо камеру 2Д или 3Д, и переключение (мини-3Д/2д на главном, или наоборот)
Карты нарисовать не проблема наверное! Если что поможем.
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо LLI.T.A.L.K.E.R. за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:15.
|