Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 28.12.2010, 01:23   #16
BlackOut
Кодер "win" ЭВМ
 
Аватар для BlackOut
 
Регистрация: 10.11.2009
Адрес: ЖуковSKY
Сообщений: 194
Написано 77 полезных сообщений
(для 155 пользователей)
Ответ: Камера от MMORPG

@Костян
Посмотри пример:
http://www.blitz-school.info/less_ex.phtml
__________________
Жизнь игра, задумка дурацкая но графика ...
(Offline)
 
Ответить с цитированием
Старый 28.12.2010, 10:45   #17
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Камера от MMORPG

Хм... чтож вы меня не спросили, я как раз такую систему сделал в своей игре %) Если кому-то еще надо, набросал простенький пример
Graphics3D 1024,768,32,1
SeedRnd(MilliSecs())

;объявление необходимых переменных
Global mxs#,mys#,dest_xang#,dest_yang#,xang#,yang#,differ_yaw#,target_rot#
Global camera_target=CreatePivot()
Global dist_target=CreatePivot(camera_target)
Global move_navigator=CreatePivot(camera_target)
Global move_directional=CreatePivot()

;создание камеры
Global camera=CreateCamera()
CameraZoom camera,1.4

;создание сцены
Global light=CreateLight()
RotateEntity light,30,30,0

plane=CreatePlane()
EntityColor plane,100,150,255
EntityPickMode plane,2

For c=1 To 10
  cube=CreateCube()
  EntityColor cube,150,255,150
  ScaleEntity cube,2,20,2
  PositionEntity cube,Rand(-50,50),20,Rand(-50,50)
  EntityPickMode cube,2
Next

;создание модели игрока
player=CreateCube()
EntityAlpha player,0.5
PositionEntity player,0,1,0
EntityColor player,255,0,0



While Not KeyHit(1)

  MouseLook(player)

  UpdateWorld()
  RenderWorld()
 
  Flip

Wend

End

;<<сама функция>>
;height - параметр указывает высоту над центром модели, куда "привязать" камеру. например если надо чтобы прицел был над головой игрока
;speed - скорость передвижения игрока
;rotate - скорость поворота модели игрока в сторону движения. желательно оставить 10

Function MouseLook(target,height=5,speed#=0.5,rotate#=10)

;ВНИМАНИЕ!!! нижеследующие 3 параметра можно менять, если хотите подредактировать "колизию" камеры с уровнем. но я не рекомендую их трогать - долго подбирал значения =)

;collision_radius - радиус луча, по которому проверяется наличие препятсвий между моделью игрока и камерой (команда LinePick)

;collision_distance - параметр смещает камеру (чем меньше значение, тем ближе будет приближаться камера) ближе к модели игрока в случае, если LinePick=true.
; помогает от "проваливания" камеры в стены

;camera_distance - расстояние от модели игрока до камеры в случае если LinePick=false

  collision_radius#=0.5
  collision_distance#=5
  camera_distance=30

  If target<>0 Then
    PositionEntity move_navigator,0,0,0

    If KeyDown(17) Then PositionEntity move_navigator,EntityX(move_navigator),0,0.1
    If KeyDown(31) Then PositionEntity move_navigator,EntityX(move_navigator),0,-0.1
    If KeyDown(30) Then PositionEntity move_navigator,-0.1,0,EntityZ(move_navigator)
    If KeyDown(32) Then PositionEntity move_navigator,0.1,0,EntityZ(move_navigator)


    PositionEntity move_directional,EntityX(target),EntityY(target)+height,EntityZ(target)
    If EntityX(move_navigator)<>0 Or EntityZ(move_navigator)<>0 Then
	  PointEntity move_directional,move_navigator
      If Abs(differ_yaw)<90 Then MoveEntity target,0,0,speed ;число 90 определяет угол между направлением движения и направлением модели, при котором модель начинает движение
    EndIf

    mxs=MouseX()-GraphicsWidth()/2
    mys=MouseY()-GraphicsHeight()/2
    MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
    mxs=mxs/5.5
    mys=mys/5.5
    If mxs>30 Then mxs=30
    If mxs<-30 Then mxs=-30
    If mys>30 Then mys=30
    If mys<-30 Then mys=-30
    dest_xang=dest_xang-mxs
    dest_yang=dest_yang+mys

    If dest_yang<-85 Then dest_yang=-85
    If dest_yang>85 Then dest_yang=85
    yang=(yang+(dest_yang-yang)/4)
    xang=(xang+(dest_xang-xang)/4)


    PositionEntity camera_target,EntityX(target),EntityY(target)+height,EntityZ(target)
    RotateEntity camera_target,0,xang,0
    PositionEntity dist_target,0,Sin(yang)*camera_distance,-Cos(yang)*camera_distance

    vis_line_x#=EntityX(camera_target,1)
    vis_line_y#=EntityY(camera_target,1)
    vis_line_z#=EntityZ(camera_target,1)
    vis_line_dx#=EntityX(dist_target,1)-EntityX(camera_target,1)
    vis_line_dy#=EntityY(dist_target,1)-EntityY(camera_target,1)
    vis_line_dz#=EntityZ(dist_target,1)-EntityZ(camera_target,1)
    If LinePick(vis_line_x,vis_line_y,vis_line_z,vis_line_dx,vis_line_dy,vis_line_dz,collision_radius) Then
      PositionEntity camera,PickedX#()-(PickedX#()-EntityX#(camera_target,1))/collision_distance,PickedY#()-(PickedY#()-EntityY#(camera_target,1))/collision_distance,PickedZ#()-(PickedZ#()-EntityZ#(camera_target,1))/collision_distance
    Else
;      PositionEntity camera,EntityX#(dist_target,1)-(EntityX#(dist_target,1)-EntityX#(camera_target,1))/collision_distance,EntityY#(dist_target,1)-(EntityY#(dist_target,1)-EntityY#(camera_target,1))/collision_distance,EntityZ#(dist_target,1)-(EntityZ#(dist_target,1)-EntityZ#(camera_target,1))/collision_distance
      PositionEntity camera,EntityX#(dist_target,1),EntityY#(dist_target,1),EntityZ#(dist_target,1)
    EndIf
    PointEntity camera,camera_target

    differ_yaw=EntityYaw(target)-EntityYaw(move_directional)
    If differ_yaw>179.9999 Then differ_yaw=differ_yaw-359.9999
    If differ_yaw<-179.9999 Then differ_yaw=359.9999+differ_yaw

    If EntityX(move_navigator)<>0 Or EntityZ(move_navigator)<>0 Then
      If differ_yaw>rotate Then
        target_rot=target_rot-rotate
      ElseIf differ_yaw<-rotate Then
        target_rot=target_rot+rotate
      ElseIf differ_yaw<rotate*3 And differ_yaw>-rotate*3 Then
        target_rot=EntityYaw(move_directional,1)
      EndIf
    EndIf
    RotateEntity target,0,target_rot,0
  EndIf
End Function
(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо Amatsu за это полезное сообщение:
Arton (03.05.2019), Randomize (29.12.2010), St_AnGer (29.12.2010)
Старый 29.12.2010, 06:31   #18
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Камера от MMORPG

Неха маленький код на камеру
(Offline)
 
Ответить с цитированием
Старый 29.12.2010, 09:45   #19
Amatsu
Дэвелопер
 
Аватар для Amatsu
 
Регистрация: 24.07.2008
Сообщений: 1,544
Написано 1,095 полезных сообщений
(для 2,706 пользователей)
Ответ: Камера от MMORPG

Сообщение от Костян Посмотреть сообщение
Неха маленький код на камеру
Можешь оптимизировать
(Offline)
 
Ответить с цитированием
Старый 29.12.2010, 23:25   #20
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Камера от MMORPG

Сообщение от Костян Посмотреть сообщение
Неха маленький код на камеру
Ты не видел исходников, по например реализации работы string'ов. Или ещё чего "попроще", так строк сотни бывают, а выглядит, как простая "чтучка".
(Offline)
 
Ответить с цитированием
Старый 30.12.2010, 05:44   #21
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Камера от MMORPG

Ты не видел исходников, по например реализации работы string'ов. Или ещё чего "попроще", так строк сотни бывают, а выглядит, как простая "чтучка".
А в чём их прикол.(string'ов. )
(Offline)
 
Ответить с цитированием
Старый 31.12.2010, 03:01   #22
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Камера от MMORPG

Сообщение от Костян Посмотреть сообщение
А в чём их прикол.(string'ов. )
Ну я и говорю, "Ты не видел исходников".
Сперва, что такое string (технически), и как он реализован на уровне памяти и переменных. А затем функции, по работе с ними, всякие там поиски в string'е, обрезания, сравнивания, конвертация одного типа данных, в string, и многое другое. Там немалый лес, и много работы с битами.

Эм, зачем это я рассказываю..
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (01.01.2011)
Старый 31.12.2010, 05:32   #23
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Камера от MMORPG

Ну я и говорю, "Ты не видел исходников".
Сперва, что такое string (технически), и как он реализован на уровне памяти и переменных. А затем функции, по работе с ними, всякие там поиски в string'е, обрезания, сравнивания, конвертация одного типа данных, в string, и многое другое. Там немалый лес, и много работы с битами.
Так эта же машинный код.Оно всё автоматом делаеться.
(Offline)
 
Ответить с цитированием
Старый 31.12.2010, 05:40   #24
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Камера от MMORPG

Сообщение от Костян Посмотреть сообщение
Так эта же машинный код.Оно всё автоматом делаеться.
O_o не не не. Не автоматом! Это в Blitz3D это уже за тебя реализовано.
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Старый 31.12.2010, 06:18   #25
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Камера от MMORPG

O_o не не не. Не автоматом! Это в Blitz3D это уже за тебя реализовано.
Когда успел написать. Тыж Offline
(Offline)
 
Ответить с цитированием
Старый 31.12.2010, 21:14   #26
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: Камера от MMORPG

Сообщение от Костян Посмотреть сообщение
Так эта же машинный код.Оно всё автоматом делаеться.
Дети тоже "автоматом" рождаются.
И вообще компьютер никто не делал, всё автоматом сделалось, и думает автоматом.
Запомни. Всё что ты видишь в мониторе, ничего не сделано "автоматом", а то что работает на уровне железа, сделано умненькими инженерами, которые тоже не "пишут пару строк".

Вообще у тебя никакого, даже базового понятия о том как компьютер и его компоненты работают и взаимодействуют? Даже в школе это преподают, несмотря на то какой там убогий предмет информатики.

Костян, сразу на заметку, чтобы быть начитанным и немного образованным в чём-то. Используй фантазию, но только не для утверждений, а для поиска информации. Вообрази, что-то, но понимай что это что-то лишь тобою вооброжаемо. И пока ты найдёшь конкретного подтверждения своим "догадкам", не бросайся ими, как "утверждениями". Они останутся твоими "догадками", не более. Здесь "удача" не работает.
Вот тебе, на вооружение:
google.com - самый важный инструмент, я лично его открываю как каждый 5 сайт. А на работе, это вообще для меня каждая вторая закладка - это гуугл.
Для образования и теоретической части, достаточно удобна ru.wikipedia.org, там есть куча всего. Можешь почитать что значит большинство терминов, на любую тему, которые ты встречаешь.
Если есть стремление к знаниям, то используй инструменты, для получения этих знаний.
Короче говоря, увидел слово string, не поленись, вбей в гугле: "string wikipedia", далее, выбери строку: String (computer science), sequence of symbols or digits in computer programming
И затем слева, переключись на русский, затем если будешь внимательным, дойдёшь до "Реализация в языках программирования", и будет что-то более ясным.

Учись пока молод! Дерзай!
Но бл..ть! НЕ ТУПИ. Детский сад...
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Артем Валерьевич (31.12.2010), Amatsu (01.01.2011), Mr_F_ (01.01.2011), Randomize (03.01.2011), Reks888 (31.12.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com