forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Помогите новечку) (http://forum.boolean.name/showthread.php?t=5201)

Strelok3848 05.12.2007 17:56

Помогите новечку)
 
Вложений: 2
Решил написать свою игру! И на данный момент решил сделать так что бы я мог передвигаться по не скольким комнатам! И у меня возник вопрос как сделать дверь?
Чтобы подходя к этой двери я нажимал на определёную клавишу и оказывался в другой комнате? Кто знает как это сделать пожалуйста помогите!
И 2 вопрос как сделать тени от 3d обьекта?
Заранее спасибо!

IGR 05.12.2007 18:17

Re: Помогите новечку)
 
Цитата:

И 2 вопрос как сделать тени от 3d обьекта?
Этот вопрос точно не для новеньких !! :)

на стенке, возле двери, создай небольшой кубик !!
пропиши для него пики !!
в цикле поставь обработчик нажатия мышки на этом кубике !!

а вообще хелп и фак рулят !!

Strelok3848 05.12.2007 18:40

Re: Помогите новечку)
 
Ну раз создать тень тяжело для новечка то помогите пожалуйста решить вопрос с дверью!

IGR 05.12.2007 18:50

Re: Помогите новечку)
 
слух, если ты хочеш зделать и вообще незнаеш как, то скачай уроки с Блиц-Скул !! там об етом много написано и расписано !!

AndruXa 06.12.2007 15:58

Re: Помогите новечку)
 
Цитата:

если ты хочеш зделать и вообще незнаеш как, то скачай уроки с Блиц-Скул !! там об етом много написано и расписано !!
Полностью согласен, всем новичкам надо читать сначала скавена а затем школу блица

moka 06.12.2007 16:48

Re: Помогите новечку)
 
Strelok3848, посмотри в справке примеры по функциям:
EntityDistance
CameraPick, PickedEntity, Picked X/Y/Z
Дальше наверное вопросы будут исчерпаны.

Лично мой совет, не читай всякие туторы, кники, и "школы". Учись в обнимку со справкой - и всё у тебя получиться.

johnk 06.12.2007 16:58

Re: Помогите новечку)
 
Один хост умер, и на блитзскул ссылки нету :( Но гораздо лучше - http://blitzetcetera.org/

Strelok3848 06.12.2007 18:18

Re: Помогите новечку)
 
Хорошо!

IGR 06.12.2007 21:01

Re: Помогите новечку)
 
Цитата:

Лично мой совет, не читай всякие туторы, кники, и "школы". Учись в обнимку со справкой - и всё у тебя получиться.
MoKa? не всем справка легко дается !! ;)
а вот туторы и скул предназначенны спецеально для наглядного представления того или инного примера Блица, что бы даже новечок мог понять !! Там для новеньких много полезного !! :)

ABTOMAT 06.12.2007 22:02

Re: Помогите новечку)
 
Цитата:

Сообщение от JohnK
...И подучи могучий Русский.

+1
Цитата:

Сообщение от MoKa
не читай всякие туторы, кники, и "школы". Учись в обнимку со справкой - и всё у тебя получиться.

+1

Strelok3848,

Делай тип-дверь:

Type door
Field mesh
Field time_opened
end type

в mesh грузи саму модельку двери. Потом пикай (CameraPick) каждый цикл в том месте где прицел, и проверяй каждый door (For d.door = Each door) - сравнивай d\mesh с пикнутым (PickedEntity). Если оно так - то прицел наведен на дверь. тогда (при помощи EntityDistance) измеряй расстояние - если оно не больше определённого (выяснишь сам какое больше нрафица) то откроем дверь (это измерение нада чтоб из другого конца зала нельзя было дверь открывать):
Меш двери анимируешь анимацией открывания и устанавливаешь d\time_opened на 100000 (к примеру) и каждый главный циклуменьшаешь это значение на 1. Если оно опустится до нуля и ниже - закрываешь дверь (анимируешь дверь анимацией закрытия)

По всем непонятным тебе командам обращайся к хелпу Блитза - он тебе товарищ, друг и помощник.


К вопросу о 3Д-тенях: ниасилишь - учи азы ;)

IGR 06.12.2007 22:21

Re: Помогите новечку)
 
а я о чем !!
АBTOMAT, почти цитата с Блиц Скул !! ;)

ABTOMAT 06.12.2007 22:40

Re: Помогите новечку)
 
IGR, Блитз-Скула не читав, тока пролистал и посмотрел примеры.
Это ж ваще жжесть - кубомапная вода с 7-ю рендерами за кадр, ну а о 7-9 ФПС в экшене в масюсеньком окошке я ж вообще молчу.

Хелпы учат думать, а скулы - втупо копировать.

AndruXa 06.12.2007 23:59

Re: Помогите новечку)
 
Незнаю, по мне так сначала нужно получить полное представление это моно сделать прочитав учебник глубокоуважаемого Скавена, который все таки решил и сделал ооочень полезный учебник, прочитав который закладываются основы как типов, так и функций, которые немаловажны в будущем. А потом уже экспериментировать со справкой. Может быть это обусловлено тем, что в те времена, когда я начинал познавать основы блица еще не было русифицированой справки, и этот учебник стал для меня настоящей находкой...Далее рекомендую прочитать урок Импера по созданию First Person Shuter'a в котором подробно написано, как и что можно сделать в самом простом варианте, доступном всем...Также рекомендую FAQ от Avela, который тоже, несмотря на свой небольшой объем, заставляет думать т.к. Там лишь подсказки, как то или иное реализовать, дальше же придется размышлять самому...Ну и наконец школа блица, в ней подробно расписаны все деиствия для создания той или иной ситуации...И после прочтения всех этих учебников начинается практика, в которой новичку предстоит самому экспериментировать со средствами блица, имея уже определенные навыки в голове, а не каша, которая появляется в голове новичка, после быстрого обзора справки. Да именно быстрого, так как по личному опыту знаю, что список всех этих команд читать очень быстро надоедает, и создает путанницу в голове. Таким образом делаем вывод, что прочтение блицовского хелпа без определенных навыков не совсем адекватное занятие.

IGR 07.12.2007 11:31

Re: Помогите новечку)
 
to ABTOMAT: вода конечно отжог, но с дверью, то там же все понятно !! ;)

moka 07.12.2007 12:27

Re: Помогите новечку)
 
AndruXa, вот тут ты заблуждаешься. На личном опыте (из собственного и наблюдений над другими), уверенно могу сказать, справки и скуулы всякие, засоряют голову новичку пуще любого другого источника, лишняя информация их замедляет.
Человек знающий хочь чуток англисский (незнать - ужасно), прочитав имя функции или имя раздела, знает что ему искать. Заходит в справку, читаем имя функции, читает параметры которые нужны функции и что она возвращает, и дальше идёт к себе в код и пробует воспользоваться функцией, у него выходит и он рад.
Во вторых, кодинг - это творческий процесс. Когда ребёнку покупают конструктор Lego он собирает то что там по инструкции, но потом всё разбирает и создаёт сам, а не по какимнибудь туториалам, потому-что создавая самому, ты будешь знать где что и как, каждый миллиметр детальки, тем самым знаешь что нужно изменить чтобы сделать это, а что изменить чтобы это, и почему тут вот шатаеться, а тут вот накось всё. Это проверенно неоднократно. Конечно народ думающий обратно, делает как считает правельным, для себя он не знает что теряет, просто понять правильность моих утверждений можно пользуясь именно этим методом обучения, и наблюдая за вторыми, которые предпочитают мануалы :)

AndruXa 08.12.2007 00:55

Re: Помогите новечку)
 
Цитата:

Когда ребёнку покупают конструктор Lego он собирает то что там по инструкции, но потом всё разбирает и создаёт сам, а не по какимнибудь туториалам,
Нук, ты прочитай внимательней, я это и написал, что вначале нужно по инструкции(учебнику), а потом уже самому(по хелпу). И вообще каждый человек уникалкн, и поэтому обучение дается каждому по разному

avel 08.12.2007 04:00

Re: Помогите новечку)
 
Цитата:

а вообще хелп и фак рулят !!
+1
Цитата:

Лично мой совет, не читай всякие туторы, кники, и "школы".
не совсем согласен... справка, конечно, рулит, но и в статьях и туторах тоже много всего полезного есть.
AndruXa +1
но излишне налегать на туторы, конечно, тоже не стоит...
мой подход был такой: урок скавена, разбор примеров из хелпа, статьи из блицеткетера, подробный просмотр нашего любимого форума, изучение справки блица. привел все это в порядке освоения... скулы всякие не читал, но собираюсь для общего развития... хотя они, конечно, и впрямь слегка засоряют мозги... и отучают мыслить самостоятельно, хотя ХЗ... главное копи-пастем не увлекаться... и английский знать тоже полезно...

Strelok3848 08.12.2007 12:34

Re: Помогите новечку)
 
Скачал уроки с блитц-скул! И у меня возник такой вопрос как сделать чтобы когда я выходил из двери была допустим улица. Вот код код комнаты
Graphics3D 640, 480
SetBuffer BackBuffer()
Dim aMap(20,20)
Dim aCube(20,20)
Const TypePlayer = 1, TypeWall = 2, TypeDoor = 3
Const HDOOR = 6, VDOOR = 7
Const OPENING = 10, OPENED = 20, CLOSING = 30, CLOSED = 40

Global player=CreateSphere()
PositionEntity player,6, 0.4, 5
ScaleEntity player,0.1,0.1,0.1
TurnEntity player,0,0,0
EntityType player, TypePlayer


cam=CreateCamera(player)
light=CreateLight(1)


Global Floor=LoadTexture("ground.BMP")
land=CreatePlane()
PositionEntity land,0,-1.5,0
EntityTexture land, Floor
Global Floortex=LoadTexture("floor.jpg")
Floor1=CreatePlane()
PositionEntity Floor1,0,-1.5,0
EntityTexture Floor1, floortex
Global skytex=LoadTexture("ceil.jpg")
ceiling=CreatePlane()
PositionEntity ceiling,0,1.5,0
EntityTexture ceiling, skytex
TurnEntity ceiling, 0,0,180
styl=LoadMesh( "Models\Stool02.3DS")
ScaleEntity styl,.01,.01,.01 ;-------------------------Styl
RotateEntity styl,0,0,0
PositionEntity styl ,7,-1,13
;knopka
lever=CreateCube()
ScaleEntity lever, 0.1, 0.1, 0.1
PositionEntity lever, 25, 0.2, 11
EntityPickMode lever, 2
NameEntity lever, "LEVER1"


mapSize% = 20
filein = ReadFile("level5.map")
mapLines = 1
While Not Eof(filein)
mapStr$ = ReadLine$( filein )
For i=1 To MapSize
aMap(mapLines,i) = Int( Mid(mapStr,i,1 ))
Next
mapLines = mapLines + 1
Wend
CloseFile(filein)

; Doors Info Structure
Type doorsinfo
Field ix%,iz%
Field oDoor%
Field status%
Field pos#
Field doortype% ; VDOOR, HDOOR
; Field Delay%
Field ticks#
End Type
Global ALL_DOORS = 10 ; number of doors
Dim Doors.doorsinfo( ALL_DOORS )
Global NumDoors = 0
tex = LoadTexture ("tex1.jpg")
tex2 = LoadTexture ("tex2.jpg")
tex3 = LoadTexture ("tex3.jpg")
tex4 = LoadTexture ("tex4.png",4)
tex5 = LoadTexture ("door1.jpg")
For j=1 To mapSize
For i=1 To mapSize
If aMap(j,i) <> 0
aCube(j,i)=CreateCube()
Select aMap(j,i)
Case 1
EntityTexture aCube(j,i), tex
ScaleEntity aCube(j,i),1.5,1.5,1.5
EntityType aCube(j,i), TypeWall
Case 2
EntityTexture aCube(j,i), tex2
ScaleEntity aCube(j,i),1.5,1.5,1.5
EntityType aCube(j,i), TypeWall
Case 3
EntityTexture aCube(j,i), tex3
ScaleEntity aCube(j,i),1.5,1.5,1.5
EntityType aCube(j,i), TypeWall
Case 4
EntityTexture aCube(j,i), tex4
ScaleEntity aCube(j,i),1.5,1.5,1.5
EntityType aCube(j,i), TypeWall
Case HDOOR
EntityTexture aCube(j,i), tex5
ScaleEntity aCube(j,i),1.5,1.5,0.2
EntityType aCube(j,i), TypeDoor
NumDoors = NumDoors + 1
Doors(NumDoors) = New doorsinfo
Doors(NumDoors)\oDoor = aCube(j,i)
Doors(NumDoors)\ix = i*3
Doors(NumDoors)\iz = j*3
Doors(NumDoors)\status = CLOSED
Doors(NumDoors)\pos = 0
Doors(NumDoors)\doortype = HDOOR
Case VDOOR
EntityTexture aCube(j,i), tex5
ScaleEntity aCube(j,i),0.2,1.5,1.5
EntityType aCube(j,i), TypeDoor
NumDoors = NumDoors + 1
Doors(NumDoors) = New doorsinfo
Doors(NumDoors)\oDoor = aCube(j,i)
Doors(NumDoors)\ix = i*3
Doors(NumDoors)\iz = j*3
Doors(NumDoors)\status = CLOSED
Doors(NumDoors)\pos = 0
Doors(NumDoors)\doortype = VDOOR
End Select
PositionEntity aCube(j,i), i*3, 0, j*3
EndIf
Next
Next
Collisions TypePlayer, TypeWall, 2, 3
Collisions TypePlayer, TypeDoor, 2, 3







While Not KeyDown( 1 )
If KeyDown(200) MoveEntity player, 0, 0, 0.2
If KeyDown(208) MoveEntity player, 0, 0, -0.2
If KeyDown(203) TurnEntity player, 0, 2, 0
If KeyDown(205) TurnEntity player, 0, -2, 0
; otkritie dveri konokoi
If MouseHit(1)=True
ent = CameraPick(cam,MouseX(),MouseY())
If ent
If EntityDistance(ent, player) < 4.5
name$ = EntityName(ent)
If name = "LEVER1"
Doors(1)\status = openING
EndIf
EndIf
EndIf
EndIf
entitywall% = EntityCollided(Player,TypeWall)
entitydoor% = EntityCollided(Player,TypeDoor)

CollideDoors(entitydoor)
UpdateDoors
UpdateWorld
RenderWorld
Text 12,10, "Entity Wall: "+Str(entitywall)
Text 12,20, "Entity Door: "+Str(entitydoor)

Flip
Wend
End
;---------------------------
Function CollideDoors( door )
For i=1 To NumDoors
If Str(Doors(i)\oDoor) = Str(door)
; FoundDoor = Str(Doors(i)\status)
Doors(i)\status = OPENING
EndIf
Next
End Function
;---------------------------
Function UpdateDoors()
If current + time_delay < MilliSecs()
For i=1 To NumDoors
;
If Doors(i)\status = OPENING
Doors(i)\pos = Doors(i)\pos + 0.1
If Doors(i)\doortype = VDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix, 0, Doors(i)\iz + Doors(i)\pos
EndIf
If Doors(i)\doortype = HDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix + Doors(i)\pos, 0, Doors(i)\iz
EndIf
If Doors(i)\pos > 2.8
Doors(i)\pos = 2.8
Doors(i)\status = OPENED
Doors(i)\ticks = MilliSecs()+3000
EndIf
EndIf
;
If Doors(i)\ticks < MilliSecs() And Doors(i)\status = OPENED Then
If Doors(i)\doortype = VDOOR
Doors(i)\status = CLOSING
EndIf
If Doors(i)\doortype = HDOOR
Doors(i)\status = CLOSING
EndIf
EndIf
;
If Doors(i)\status = CLOSING
Doors(i)\pos = Doors(i)\pos - 0.1
If Doors(i)\pos < 0
Doors(i)\pos = 0
Doors(i)\status = CLOSED
EndIf
If Doors(i)\doortype = VDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix, 0, Doors(i)\iz + Doors(i)\pos
EndIf
If Doors(i)\doortype = HDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix + Doors(i)\pos, 0, Doors(i)\iz
EndIf
EndIf
Next
EndIf
current = MilliSecs()
End Function

Function UpdateScene()
mXs# = MouseXSpeed()
mYs# = MouseYSpeed()
;kamera
TurnEntity sceneCamPiv,0,-(mXs#/3),0,True
TurnEntity sceneCamera,(mYs#/3),0,0
End Function

Raiter 08.12.2007 13:04

Re: Помогите новечку)
 
Ну вот... Что и требовалось доказать... Уроки - зло

Я учился с самого-самого начала и не по мануалам (интернета не было) и не по справке (англицкий слабо знал), а по стандартным примерам Блица. Простым научным тыком... Потом в ход пошла справка... А когда я почитал эти уроки, то сплюнул и вернулся к проверенным методам - справка + научный тык + мозг

ABTOMAT 08.12.2007 13:22

Re: Помогите новечку)
 
Цитата:

чтобы когда я выходил из двери была допустим улица
Сделать улицу в 3D Max'е, импортировать в b3d, загрузить 8)
З.Ы. Если бы ты сам делал комнату, такого вопросы бы не возникло.
З.З.Ы. Класть целый код в посте - дурной тон. Клади тогда, что-ли в архиве со всеми ресурсами чтоб можно было запустить и посмотреть а не искать и подставлять ресурсы.

FrankH 14.12.2007 01:16

Re: Помогите новечку)
 
Если перс колизится с невидимым боксом в дверях, удаляем комнату и грузим "допустим улица". Ставим перса у дверей дома.
Даже интересно что будет следующим.

HolyDel 14.12.2007 01:23

Re: Помогите новечку)
 
потом начнутся вопли о коллизиях.
то не работает, ето не работает, тут не коллидится, а почему? а за что? и т.д.

делай по человечески - пивот к месту двери.
как расстояние между плеером и пивотом меньше определенного значения - грузиим следующую комнату (нужную).

sash13 14.12.2007 01:47

Re: Помогите новечку)
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.


Взято из уроков блица

Strelok3848 18.12.2007 19:27

Re: Помогите новечку)
 
Помогите пожалуйста! Загрузил я оружие себе в игру и решил сделать прицел, но он у меня не отображается, не знаю почему! Вот кодинг
Global pricel=LoadImage("pricel.bmp")
MidHandle pricel
MaskImage pricel,255,255,255
в цикле
DrawImage pricel,MouseX(),MouseY() и ни чего нет.

johnk 18.12.2007 19:33

Re: Помогите новечку)
 
Не помюн б3д. Может flip забыл?

H@NON 18.12.2007 19:39

Re: Помогите новечку)
 
обработка 2д в блитце идет после RenderWorld() и перед Flip.

Strelok3848 18.12.2007 19:45

Re: Помогите новечку)
 
Поставил перед Flip и всё отобразилось! Большое спасибо

dector 18.12.2007 20:36

Re: Помогите новечку)
 
покажите плиз "скул"

ABTOMAT 18.12.2007 20:39

Re: Помогите новечку)
 
dector, сформулируй вопрос более понятно.

dector 18.12.2007 21:06

Re: Помогите новечку)
 
:D Я прошу показать мне школу блица. "скул" тоесть ;)
тоесть уроки всякие - вы же про них говорили

johnk 18.12.2007 21:32

Re: Помогите новечку)
 
http://johnk.3dn.ru/forum/3-2-2 - склероз?

dector 18.12.2007 22:00

Re: Помогите новечку)
 
не...
просто желательно еще и обяснение

ABTOMAT 19.12.2007 00:39

Re: Помогите новечку)
 
Цитата:

школу блица. "скул" тоесть
sucks
если не лень посмотреть на сиё - качай по ссылке, шо ЖонК дал...

Strelok3848 19.12.2007 10:42

Re: Помогите новечку)
 
Хочу сделать следы от пуль ну хотябы простые(чёрной точкой) , но не имею представления как это реализовать. Кто знает помогите.

H@NON 19.12.2007 11:55

Re: Помогите новечку)
 
отткрываем поиск по форуму, забиваем туда "следы от пуль" и вуаля!.
http://boolean.name/showthread.php?t...F1%EB%E5%E4%FB
http://boolean.name/showthread.php?t...F1%EB%E5%E4%FB

Damp 19.12.2007 14:26

Re: Помогите новечку)
 
В примере про замок сделано спрайтами, а если на боте нужно, то рисовать в текстуру...

Strelok3848 19.12.2007 14:27

Re: Помогите новечку)
 
А как сделать с помощью спрайтов ?Полазил по ссылками ниничего не понял.)

HolyDel 19.12.2007 14:32

Re: Помогите новечку)
 
посмотри пример Castle.
где то на форуме была моя сетевая стрелялка - там тоже с декалями.

ABTOMAT 20.12.2007 00:46

Re: Помогите новечку)
 
В Castl'е просто делается спрайт в месте попадания...
Кровь, например, таким способом не сделать.

avel 15.01.2008 22:46

Ответ: Помогите новечку)
 
dector не смотри блиц скул. это бяка! :)
ABTOMAT почему не сделать? сделать! только спрайтов больше надо + задать их движение...

Halk-DS 16.01.2008 04:09

Ответ: Помогите новечку)
 
2 Strelok 3848
Ето пример со спрайтами !!!

Type Sled
Field Time,Spr
End Type

Graphics3D 640,480,32,0

Global Walls=CreateCube()
Global Cam=CreateCamera()
Global Point=CreateSprite()
Global PointTex=CreateTexture(10,10)
Global Lit=CreateLight()

ScaleEntity Walls,10,10,1
PositionEntity Cam,0,0,-20
EntityPickMode Walls,2
SpriteViewMode Point,2
HideEntity Point

HidePointer

Repeat

MoveEntity Cam,(KeyDown(205)-KeyDown(203))*.05,0,(KeyDown(200)-KeyDown(208))*.05
gradx#=gradx#+MouseXSpeed()*0.1
grady#=grady#+MouseYSpeed()*0.1
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
RotateEntity Cam,grady#,-gradx#,0,False

If MouseHit(1)
AddBlackPoint
EndIf

DeletePoints

RenderWorld
Flip

Until KeyHit(1)

End

Function DeletePoints()

For N.Sled=Each Sled
N\Time=N\Time-1
If N\Time<0
FreeEntity N\Spr
Delete n
EndIf
Next

End Function

Function AddBlackPoint()

CameraPick(Cam,GraphicsWidth()*.5,GraphicsHeight() *.5)
If PickedEntity()<>0
N.Sled=New Sled
N\Time=100
N\Spr=CopyEntity( Point )
EntityTexture N\Spr,PointTex
PositionEntity N\Spr,PickedX#(),PickedY#(),PickedZ#()-.1
ScaleSprite N\Spr,0.2,0.2
EndIf

End Function

moka 17.01.2008 19:49

Ответ: Помогите новечку)
 
Вы не поверите, но к примеру кровь в Gears of War делаеться 2-5 спрайтами :)

ABTOMAT 17.01.2008 21:02

Ответ: Помогите новечку)
 
Цитата:

ABTOMAT почему не сделать? сделать! только спрайтов больше надо + задать их движение...
Это было бы брутально и бессердечно...

avel 17.01.2008 23:17

Ответ: Помогите новечку)
 
ну почему же... нормально. :)
я всегда кровь спрайтами делаю.

H@NON 17.01.2008 23:29

Ответ: Помогите новечку)
 
еще хороший вариант добавить мясо в игру, то есть помимо крови создавать отрывающиеся части тела, и то что испольуются спрайты менее заметно, да и просто красиво.

Halk-DS 18.01.2008 03:46

Ответ: Помогите новечку)
 
Вложений: 1
Avel +1
Спрайти - ето круть! Я б сказал лутшее малоресурсное решение для крови!!
И воть еще пример как делать елементарную кров при помощи сфер и красных пятен! Передерта гдета с кокогото сайта!:dontknow:


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot