![]() |
Помогите новечку)
Вложений: 2
Решил написать свою игру! И на данный момент решил сделать так что бы я мог передвигаться по не скольким комнатам! И у меня возник вопрос как сделать дверь?
Чтобы подходя к этой двери я нажимал на определёную клавишу и оказывался в другой комнате? Кто знает как это сделать пожалуйста помогите! И 2 вопрос как сделать тени от 3d обьекта? Заранее спасибо! |
Re: Помогите новечку)
Цитата:
на стенке, возле двери, создай небольшой кубик !! пропиши для него пики !! в цикле поставь обработчик нажатия мышки на этом кубике !! а вообще хелп и фак рулят !! |
Re: Помогите новечку)
Ну раз создать тень тяжело для новечка то помогите пожалуйста решить вопрос с дверью!
|
Re: Помогите новечку)
слух, если ты хочеш зделать и вообще незнаеш как, то скачай уроки с Блиц-Скул !! там об етом много написано и расписано !!
|
Re: Помогите новечку)
Цитата:
|
Re: Помогите новечку)
Strelok3848, посмотри в справке примеры по функциям:
EntityDistance CameraPick, PickedEntity, Picked X/Y/Z Дальше наверное вопросы будут исчерпаны. Лично мой совет, не читай всякие туторы, кники, и "школы". Учись в обнимку со справкой - и всё у тебя получиться. |
Re: Помогите новечку)
Один хост умер, и на блитзскул ссылки нету :( Но гораздо лучше - http://blitzetcetera.org/
|
Re: Помогите новечку)
Хорошо!
|
Re: Помогите новечку)
Цитата:
а вот туторы и скул предназначенны спецеально для наглядного представления того или инного примера Блица, что бы даже новечок мог понять !! Там для новеньких много полезного !! :) |
Re: Помогите новечку)
Цитата:
Цитата:
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Д-тенях: ниасилишь - учи азы ;) |
Re: Помогите новечку)
|
Re: Помогите новечку)
|
Re: Помогите новечку)
Незнаю, по мне так сначала нужно получить полное представление это моно сделать прочитав учебник глубокоуважаемого Скавена, который все таки решил и сделал ооочень полезный учебник, прочитав который закладываются основы как типов, так и функций, которые немаловажны в будущем. А потом уже экспериментировать со справкой. Может быть это обусловлено тем, что в те времена, когда я начинал познавать основы блица еще не было русифицированой справки, и этот учебник стал для меня настоящей находкой...Далее рекомендую прочитать урок Импера по созданию First Person Shuter'a в котором подробно написано, как и что можно сделать в самом простом варианте, доступном всем...Также рекомендую FAQ от Avela, который тоже, несмотря на свой небольшой объем, заставляет думать т.к. Там лишь подсказки, как то или иное реализовать, дальше же придется размышлять самому...Ну и наконец школа блица, в ней подробно расписаны все деиствия для создания той или иной ситуации...И после прочтения всех этих учебников начинается практика, в которой новичку предстоит самому экспериментировать со средствами блица, имея уже определенные навыки в голове, а не каша, которая появляется в голове новичка, после быстрого обзора справки. Да именно быстрого, так как по личному опыту знаю, что список всех этих команд читать очень быстро надоедает, и создает путанницу в голове. Таким образом делаем вывод, что прочтение блицовского хелпа без определенных навыков не совсем адекватное занятие.
|
Re: Помогите новечку)
|
Re: Помогите новечку)
|
Re: Помогите новечку)
Цитата:
|
Re: Помогите новечку)
Цитата:
Цитата:
AndruXa +1 но излишне налегать на туторы, конечно, тоже не стоит... мой подход был такой: урок скавена, разбор примеров из хелпа, статьи из блицеткетера, подробный просмотр нашего любимого форума, изучение справки блица. привел все это в порядке освоения... скулы всякие не читал, но собираюсь для общего развития... хотя они, конечно, и впрямь слегка засоряют мозги... и отучают мыслить самостоятельно, хотя ХЗ... главное копи-пастем не увлекаться... и английский знать тоже полезно... |
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 |
Re: Помогите новечку)
Ну вот... Что и требовалось доказать... Уроки - зло
Я учился с самого-самого начала и не по мануалам (интернета не было) и не по справке (англицкий слабо знал), а по стандартным примерам Блица. Простым научным тыком... Потом в ход пошла справка... А когда я почитал эти уроки, то сплюнул и вернулся к проверенным методам - справка + научный тык + мозг |
Re: Помогите новечку)
Цитата:
З.Ы. Если бы ты сам делал комнату, такого вопросы бы не возникло. З.З.Ы. Класть целый код в посте - дурной тон. Клади тогда, что-ли в архиве со всеми ресурсами чтоб можно было запустить и посмотреть а не искать и подставлять ресурсы. |
Re: Помогите новечку)
Если перс колизится с невидимым боксом в дверях, удаляем комнату и грузим "допустим улица". Ставим перса у дверей дома.
Даже интересно что будет следующим. |
Re: Помогите новечку)
потом начнутся вопли о коллизиях.
то не работает, ето не работает, тут не коллидится, а почему? а за что? и т.д. делай по человечески - пивот к месту двери. как расстояние между плеером и пивотом меньше определенного значения - грузиим следующую комнату (нужную). |
Re: Помогите новечку)
Взято из уроков блица |
Re: Помогите новечку)
Помогите пожалуйста! Загрузил я оружие себе в игру и решил сделать прицел, но он у меня не отображается, не знаю почему! Вот кодинг
Global pricel=LoadImage("pricel.bmp") MidHandle pricel MaskImage pricel,255,255,255 в цикле DrawImage pricel,MouseX(),MouseY() и ни чего нет. |
Re: Помогите новечку)
Не помюн б3д. Может flip забыл?
|
Re: Помогите новечку)
обработка 2д в блитце идет после RenderWorld() и перед Flip.
|
Re: Помогите новечку)
Поставил перед Flip и всё отобразилось! Большое спасибо
|
Re: Помогите новечку)
покажите плиз "скул"
|
Re: Помогите новечку)
dector, сформулируй вопрос более понятно.
|
Re: Помогите новечку)
:D Я прошу показать мне школу блица. "скул" тоесть ;)
тоесть уроки всякие - вы же про них говорили |
Re: Помогите новечку)
http://johnk.3dn.ru/forum/3-2-2 - склероз?
|
Re: Помогите новечку)
не...
просто желательно еще и обяснение |
Re: Помогите новечку)
|
Re: Помогите новечку)
Хочу сделать следы от пуль ну хотябы простые(чёрной точкой) , но не имею представления как это реализовать. Кто знает помогите.
|
Re: Помогите новечку)
отткрываем поиск по форуму, забиваем туда "следы от пуль" и вуаля!.
http://boolean.name/showthread.php?t...F1%EB%E5%E4%FB http://boolean.name/showthread.php?t...F1%EB%E5%E4%FB |
Re: Помогите новечку)
В примере про замок сделано спрайтами, а если на боте нужно, то рисовать в текстуру...
|
Re: Помогите новечку)
А как сделать с помощью спрайтов ?Полазил по ссылками ниничего не понял.)
|
Re: Помогите новечку)
посмотри пример Castle.
где то на форуме была моя сетевая стрелялка - там тоже с декалями. |
Re: Помогите новечку)
В Castl'е просто делается спрайт в месте попадания...
Кровь, например, таким способом не сделать. |
Ответ: Помогите новечку)
dector не смотри блиц скул. это бяка! :)
ABTOMAT почему не сделать? сделать! только спрайтов больше надо + задать их движение... |
Ответ: Помогите новечку)
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 |
Ответ: Помогите новечку)
Вы не поверите, но к примеру кровь в Gears of War делаеться 2-5 спрайтами :)
|
Ответ: Помогите новечку)
Цитата:
|
Ответ: Помогите новечку)
ну почему же... нормально. :)
я всегда кровь спрайтами делаю. |
Ответ: Помогите новечку)
еще хороший вариант добавить мясо в игру, то есть помимо крови создавать отрывающиеся части тела, и то что испольуются спрайты менее заметно, да и просто красиво.
|
Ответ: Помогите новечку)
Вложений: 1
Avel +1
Спрайти - ето круть! Я б сказал лутшее малоресурсное решение для крови!! И воть еще пример как делать елементарную кров при помощи сфер и красных пятен! Передерта гдета с кокогото сайта!:dontknow: |
Часовой пояс GMT +4, время: 13:10. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot