Вид от третьего лица и камера.
|
|
Unodeya | Дата: Суббота, 23 Мая 2009, 17:46 | Сообщение # 1 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Вот у меня есть моя наработка. Мне нужно чтобы камера поворачивалась туда куда игрок, когда игрок движется вперед. А когда игрок стоит камера могла вертется вокруг него, смотреть вверх и вниз с ограниченным углом. Я начинающий поэтому для меня немного сложновато. Заранее спасибо за ответ!! Супер сайт и форум. Помогите пожалуйста...!.!.!. Code Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global Quit=False Global Player Global Cube Global Cam
Global user_pivot=CreatePivot() Global Rot_camera=0
Cube=CreateCube() PositionEntity Cube,0,5,0
Player=CreateCube()
Cam=CreateCamera() PositionEntity cam,0,5,-10 ;
lit=CreateLight()
Repeat
If KeyDown(200)=1 Then TurnEntity Player,0,-MouseXSpeed(),0,0 ; Как сделать чтобы эти две функции работали вместе, куда смотрит камера туда игрок? TurnEntity User_Pivot,0,MouseXSpeed(),0,0 MoveEntity player,0,0,.1 EndIf
If KeyDown(208) MoveEntity player,0,0,-.1
If KeyDown(203) MoveEntity player,-.1,0,0
If KeyDown(205) MoveEntity player,.1,0,0
TurnEntity user_pivot,0,-MouseXSpeed(),0,0 ; Как сделать чтобы камера смотрела вверх и вниз с ограниченным углом
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
PositionEntity user_pivot,EntityX(Player),EntityY(Player),EntityZ(Player) EntityParent cam,user_pivot
UpdateWorld RenderWorld
If KeyHit(1)=1 Then Quit = True Flip Until Quit
End
|
|
| |
maxturbo | Дата: Суббота, 23 Мая 2009, 19:53 | Сообщение # 2 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Вот пример неплохого движения объекта Code Function UpdatePlayer() running#= 0 RandCamera=0 ;Вращение Мышю If Abs(EntityPitch(camera)+mys)<55 TurnEntity camera, mys*.3,0,0 EndIf TurnEntity player,0,-MouseXSpeed()*.3,0 mxs=MouseXSpeed() mys=MouseYSpeed() MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 ;Перемещение If KeyDown(17) Then MoveEntity player,px+0,py+0,pz+1 MoveEntity player,-Sin(MilliSecs()/2)*.08*3,Sin(MilliSecs())*.1,0 running = Rnd (0.35, 0.75) Else If KeyDown(31) MoveEntity player,px+0,py+0,pz-1 running = Rnd (0.55, 0.95) EndIf If KeyDown(30) Then MoveEntity player,px-1,py+0,pz+0 running = Rnd (0.35, 0.75) Else If KeyDown(32) MoveEntity player,px+1,py+0,pz+0 running = Rnd (0.55, 0.95) EndIf TranslateEntity player,0,grav#-1,0
|
|
| |
Unodeya | Дата: Суббота, 23 Мая 2009, 20:04 | Сообщение # 3 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| cпасибо, а как мне привязать эту функцию. Я пробовал у меня не получается... Вижу только чёрный экран Вот код Code Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global Quit=False Global Player Global Cube Global Camera
Global user_pivot=CreatePivot() Global user_pivot2=CreatePivot() Global Rot_camera=0
Cube=CreateCube() PositionEntity Cube,0,5,0
Player=CreateCube()
Camera=CreateCamera()
lit=CreateLight()
Repeat
UpdatePlayer()
UpdateWorld Render World
If KeyHit(1)=1 Then Quit = True Flip Until Quit
End
Function UpdatePlayer() running#= 0 RandCamera=0 ;Âðàùåíèå Ìûøþ If Abs(EntityPitch(camera)+mys)<55 TurnEntity camera, mys*.3,0,0 EndIf TurnEntity player,0,-MouseXSpeed()*.3,0 mxs=MouseXSpeed() mys=MouseYSpeed() MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 ;Ïåðåìåùåíèå If KeyDown(17) Then MoveEntity player,px+0,py+0,pz+1 MoveEntity player,-Sin(MilliSecs()/2)*.08*3,Sin(MilliSecs())*.1,0 running = Rnd (0.35, 0.75) Else If KeyDown(31) MoveEntity player,px+0,py+0,pz-1 running = Rnd (0.55, 0.95) EndIf If KeyDown(30) Then MoveEntity player,px-1,py+0,pz+0 running = Rnd (0.35, 0.75) Else If KeyDown(32) MoveEntity player,px+1,py+0,pz+0 running = Rnd (0.55, 0.95) EndIf TranslateEntity player,0,grav#-1,0 End Function
|
|
| |
maxturbo | Дата: Суббота, 23 Мая 2009, 20:16 | Сообщение # 4 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Ну примерно вот так вот все выглядит Code Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global Quit=False plane=CreatePlane() EntityColor plane,0,255,0 player=CreatePivot() ;создаем основной объект. это будет пивот player_cub=CreateCube(player) PositionEntity player_cub,0,0,10 cub=CreateCube() ScaleEntity cub,5,5,5 PositionEntity cub,0,5,0 PositionEntity player,0,20,0 ;позиционируем его EntityType player,PlayerType ;присваиваем ему тип персонажа. это нужно для коллизии. EntityRadius player,10 camera=CreateCamera(player) PositionEntity camera,0,10,0 ;располагаем ее. CameraRange camera,1,10000
Repeat
If Abs(EntityPitch(camera)+mys)<55 TurnEntity camera, mys*.3,0,0 EndIf TurnEntity player,0,-MouseXSpeed()*.3,0 mxs=MouseXSpeed() mys=MouseYSpeed() MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 If KeyDown(17) Then MoveEntity player,px+0,py+0,pz+1 MoveEntity player,-Sin(MilliSecs()/2)*.08*3,Sin(MilliSecs())*.1,0 running = Rnd (0.35, 0.75) Else If KeyDown(31) MoveEntity player,px+0,py+0,pz-1 running = Rnd (0.55, 0.95) EndIf If KeyDown(30) Then MoveEntity player,px-1,py+0,pz+0 running = Rnd (0.35, 0.75) Else If KeyDown(32) MoveEntity player,px+1,py+0,pz+0 running = Rnd (0.55, 0.95) EndIf
UpdateWorld RenderWorld
If KeyHit(1)=1 Then Quit = True Flip Until Quit
End
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 12:42 | Сообщение # 5 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Спасибо! Но это не совсем то чего я хотел( чтобы игрок поворачивался вместе с мышькой только когда идёт вперед. Это реально реализовать?
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 13:59 | Сообщение # 6 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Нажимаю идти вперед, когда иду вперед управляю игроком мышкой - повороты вправо влево. Когда игрок стоит на месте мышкой кручусь вокруг него. свободно! Вот)
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 16:00 | Сообщение # 7 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| alexey23b, Для тебя может элементарные, а человек только начал изучать этот язык Unodeya, Вот лови может так тебе надо!!! Code Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global Quit=False plans=0 plan=CreatePlane() tex_plane=LoadTexture("AlgaeBricks.bmp") EntityTexture plan,tex_plane user_pivot=CreatePivot()
player=CreatePivot() cub=CreateCube(player) Cam=CreateCamera(player) PositionEntity cam,0,5,-10
lit=CreateLight()
Repeat mxs=MouseXSpeed() mys=MouseYSpeed() If Abs(EntityPitch(cam)+mys)<55 TurnEntity cam, mys*.3,0,0
EndIf
If KeyDown(200)=1 Then MoveEntity player,0,0,.1 TurnEntity player,0,-mxs*.3,0 plans=1 Else If Not KeyDown(200) plans=0 EndIf If plans=1 EntityParent cam,player EndIf If plans=0 EntityParent cam,user_pivot EndIf
If KeyDown(208) MoveEntity player,0,0,-.1 If KeyDown(203) MoveEntity player,-.1,0,0 If KeyDown(205) MoveEntity player,.1,0,0
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
PositionEntity user_pivot,EntityX(player),EntityY(player),EntityZ(player) TurnEntity user_pivot,0,-mxs,0,0
UpdateWorld RenderWorld Text 50,50,plans If KeyHit(1)=1 Then Quit = True Flip Until Quit
End
Сообщение отредактировал maxturbo - Воскресенье, 24 Мая 2009, 16:01 |
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 16:02 | Сообщение # 8 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| За места текстуры любую свою воткни!!!
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 17:49 | Сообщение # 9 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Ну как так такой тебе код надо было?
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 18:01 | Сообщение # 10 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Спасибо ОГРОМНОЕ! )) Есть вопрос конечно немного не по теме) - У меня в игре есть внутриигровое меню. Дак вот я не могу пошевилить мышкой когда его открываю( потомучто игровой процесс не ставится на паузу. Что нужно сделать? Я так понимаю отключить обновление основного цикла когда открыто меню?) У меня в меню реализованна мышь. Или как то отключить управление мышью в игровом процессе?. СПАСИБО ЕЩЁ РАЗ MAXTURBO!! Респект!
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 18:19 | Сообщение # 11 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Через переменные отключи отцинтровку мыши как тебе написал alexey23b и все при выходе в меню например переменная равна будет 1 значить отключена, а при входе в игру 0 значить включено, могу расписать поподробней если не понятно!!!
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 18:29 | Сообщение # 12 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Примерно вот так вот Code Graphics3D 1024,768,32,2 SetBuffer BackBuffer() Global Quit=False plans=0 mous=0;Переменная для отключения 0-включена, 1-отключена
plan=CreatePlane() tex_plane=LoadTexture("AlgaeBricks.bmp") EntityTexture plan,tex_plane user_pivot=CreatePivot()
player=CreatePivot() cub=CreateCube(player) Cam=CreateCamera(player) PositionEntity cam,0,5,-10
lit=CreateLight()
Repeat mxs=MouseXSpeed() mys=MouseYSpeed() If Abs(EntityPitch(cam)+mys)<55 TurnEntity cam, mys*.3,0,0
EndIf
If KeyDown(200)=1 Then MoveEntity player,0,0,.1 TurnEntity player,0,-mxs*.3,0 plans=1 Else If Not KeyDown(200) plans=0 EndIf If plans=1 EntityParent cam,player EndIf If plans=0 EntityParent cam,user_pivot EndIf
If KeyDown(208) MoveEntity player,0,0,-.1 If KeyDown(203) MoveEntity player,-.1,0,0 If KeyDown(205) MoveEntity player,.1,0,0
If mous=0;Переменная равна 0 значеть включена функция MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5 EndIf PositionEntity user_pivot,EntityX(player),EntityY(player),EntityZ(player) TurnEntity user_pivot,0,-mxs,0,0 If KeyHit(2) Then;Проверка нажатии клавиши 1 mous=1-mous;Изменение переменной EndIf UpdateWorld RenderWorld Text 50,50,plans Text 50,70,mous If KeyHit(1)=1 Quit=True Flip Until Quit End
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 18:35 | Сообщение # 13 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| ТЫ ПРОСТО СУПЕР! КАК БУДЕТ ВОЗМОЖНОСТЬ ПОВЫСИТЬ РЕПУ ЭТО МОЯ ГЛАВНАЯ ЦЕЛЬ)))))) Спасибо тебе огромное таких как ты мало)
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 18:37 | Сообщение # 14 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| МОЖНО ЕЩЁ ВОПРОСИК. В ТВОЁМ ПРИМЕРЕ ПРО ВРАЩЕНИЕ МЫШИ ВОКРУГ. КОГДА Я ДВИГАЮ ИГРОКОКА ОН ПОВОРАЧИВАЕТСЯ ТУДА КУДА СМОТРИТ МЫШКА - ЭТО ЕДИНСТВЕННЫЙ НЬЮАНС)
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 18:42 | Сообщение # 15 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Оброщайся если что
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 18:55 | Сообщение # 16 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Просто сделай чтоб камера автоматом выравнивалась по оси и все я уже сегодня не смогу расписать, будет время напишу позже!!!
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 19:03 | Сообщение # 17 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Ща наобращаюсь) Возник ещё вопрос, когда открываю внутреигровое меню - не главное. Как поставить всё как бы на паузу. Чтобы пока я лазею в меню игропроцесс ждал меня)
|
|
| |
maxturbo | Дата: Воскресенье, 24 Мая 2009, 19:14 | Сообщение # 18 |
![maxturbo](http://s5.ucoz.net/a/05/0892.jpg) Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
Профессия: Программер
Проектов: 1 в разработке
| Попробуй так но все равно чучуть нето Code If mous=0 MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5 RenderWorld EndIf
|
|
| |
Unodeya | Дата: Воскресенье, 24 Мая 2009, 21:14 | Сообщение # 19 |
![Unodeya](http://igrostroenie.ru/avatar/29/147303.gif) Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус: ![](/on.gif)
| Когда нажимаю идти вперед чтобы камера выравнивалась ! Очень важно помогите пожалуйста! И ещё я заметил что если нажать вперед и вправо например игрок двигается по диагонали в два раза быстрее т.к прибавляются значения скорости вперед и вправо. Как решить эту проблемму?(
Сообщение отредактировал Unodeya - Вторник, 26 Мая 2009, 08:47 |
|
| |
CostUm | Дата: Суббота, 30 Мая 2009, 04:40 | Сообщение # 20 |
![CostUm](http://igrostroenie.my1.ru/avatar/91/964234.gif) MegaNoob on Igrostroenie.ru
Группа: Участники
Сообщений: 269
Награды: 0
Замечания: 40%
Статус: ![](/on.gif)
| maxturbo, слух парень, если сможеш могбы прилепить прошлый код про камеру к моему коду, ато у меня нихира неполучаетца(( если не лень канешно.. http://rapidshare.com/files/238915652/TPS.rar.html
|
|
| |