Показать сообщение отдельно
Старый 08.01.2012, 14:00   #1
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
загрузка обьектов из файла

Многие хотят сделать чтоб игра загружала несколько обьектов из файла DAt INI ил хоть какой но надо писать какую то функцию а вот какую я сейчас и покажу

начнём
создадим файл с названием map.dat
и сделаем такое содержание

1
data\test_model1.3ds
разберём
1 это количество строк каторое мы будем читать
data\test_model1.3ds это сама модель

а теперь впишем код
filemapx = ReadFile("map.dat") 
kolx = ReadLine(filemapx) 
For i=1 To kolx
tyrp1$=ReadLine(filemapx)
Createpxmap(tyrp1$)
Next
CloseFile filemapx

объясняю функцию

filemapx = ReadFile("map.dat") ;Открываем файл нашей карты
kolx = ReadLine(filemapx) ;Считываем количество строк с моделями
For i=1 To kolx начинаем цикл
tyrp1$=ReadLine(filemapx) ;считываем адрес модели из строки
Createpxmap(tyrp1$) ; запускаем функцию и задаём адрес модели
Next ; далее
CloseFile filemapx ;Закрываем файл

сама функция

Type map  ; начинаем тип
	Field mesh ; добавляем тип
End Type ; заканчиваем тип 



Function Createpxmap(tyrp1$)  ; создаём функцию
mp.map = New map ; создаём тип
mp\mesh=loadmesh(tyrp1$) ; загружаем меш в тип
End Function ; заканчиваем функцию

также код для
примера

Graphics3D 800, 600,32,2


AmbientLight 255,255,255

	SetBuffer BackBuffer()	
	

piv = CreatePivot()
Global camera = CreateCamera(piv)
pl=LoadMesh("0.3ds")

ps=LoadMesh("1.3ds")



filemapx = ReadFile("map.dat") ;Открываем файл нашей карты
kolx = ReadLine(filemapx) ;Считываем количество строк с моделями
For i=1 To kolx 
tyrp1$=ReadLine(filemapx) ;считываем адрес модели из строки
Createpxmap(tyrp1$) ; запускаем функцию и задаём адрес модели
Next ; далее
CloseFile filemapx ;Закрываем файл




PositionEntity camera,40,0,0
TurnEntity camera,0,90,0
CameraRange camera,1,9000
lh = CreateLight(1, cam)

While Not KeyDown( 1 )


PositionEntity piv ,EntityX(ps),EntityY(ps),EntityZ(ps)
   mxspd#=MouseXSpeed()*0.2
   myspd#=MouseYSpeed()*0.2

 MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 

   campitch=campitch+myspd
   If campitch<-89 Then campitch=-89
   If campitch>89 Then campitch=89
   RotateEntity piv,0,EntityYaw(piv)-mxspd,campitch



UpdateWorld ()

RenderWorld

		
Flip 
Wend 

End



Type map  ; начинаем тип
	Field mesh ; добавляем тип
End Type ; заканчиваем тип 


Function Createpxmap(tyrp1$)  ; создаём функцию
mp.map = New map ; создаём тип
mp\mesh=LoadMesh(tyrp1$) ; загружаем меш в тип
End Function ; заканчиваем функцию
вот и всё думаю статья пригодится многим
также в тип можно ставить адреса текстур изображений звуков и видео
Tirarex@2012
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо tirarex за это полезное сообщение:
4yBa4Ok (09.01.2012), Crayzi (09.01.2012), LLI.T.A.L.K.E.R. (09.01.2012)