[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Вид от третьего лица и камера.
UnodeyaДата: Суббота, 23 Мая 2009, 17:46 | Сообщение # 1
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Вот у меня есть моя наработка. Мне нужно чтобы камера поворачивалась туда куда игрок, когда игрок движется вперед. А когда игрок стоит камера могла вертется вокруг него, смотреть вверх и вниз с ограниченным углом. Я начинающий поэтому для меня немного сложновато. Заранее спасибо за ответ!! Супер сайт и форум. Помогите пожалуйста...!.!.!.

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
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 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
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
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
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 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
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Спасибо! Но это не совсем то чего я хотел( чтобы игрок поворачивался вместе с мышькой только когда идёт вперед. Это реально реализовать?



 
UnodeyaДата: Воскресенье, 24 Мая 2009, 13:59 | Сообщение # 6
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Нажимаю идти вперед, когда иду вперед управляю игроком мышкой - повороты вправо влево. Когда игрок стоит на месте мышкой кручусь вокруг него. свободно! Вот)



 
maxturboДата: Воскресенье, 24 Мая 2009, 16:00 | Сообщение # 7
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 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
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
За места текстуры любую свою воткни!!!
 
maxturboДата: Воскресенье, 24 Мая 2009, 17:49 | Сообщение # 9
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Ну как так такой тебе код надо было?
 
UnodeyaДата: Воскресенье, 24 Мая 2009, 18:01 | Сообщение # 10
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Спасибо ОГРОМНОЕ! )) Есть вопрос конечно немного не по теме) - У меня в игре есть внутриигровое меню. Дак вот я не могу пошевилить мышкой когда его открываю( потомучто игровой процесс не ставится на паузу. Что нужно сделать? Я так понимаю отключить обновление основного цикла когда открыто меню?) У меня в меню реализованна мышь. Или как то отключить управление мышью в игровом процессе?. СПАСИБО ЕЩЁ РАЗ MAXTURBO!! Респект!



 
maxturboДата: Воскресенье, 24 Мая 2009, 18:19 | Сообщение # 11
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Через переменные отключи отцинтровку мыши как тебе написал alexey23b и все при выходе в меню например переменная равна будет 1 значить отключена, а при входе в игру 0 значить включено, могу расписать поподробней если не понятно!!!
 
maxturboДата: Воскресенье, 24 Мая 2009, 18:29 | Сообщение # 12
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 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
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
ТЫ ПРОСТО СУПЕР! КАК БУДЕТ ВОЗМОЖНОСТЬ ПОВЫСИТЬ РЕПУ ЭТО МОЯ ГЛАВНАЯ ЦЕЛЬ)))))) Спасибо тебе огромное таких как ты мало)



 
UnodeyaДата: Воскресенье, 24 Мая 2009, 18:37 | Сообщение # 14
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
МОЖНО ЕЩЁ ВОПРОСИК. В ТВОЁМ ПРИМЕРЕ ПРО ВРАЩЕНИЕ МЫШИ ВОКРУГ. КОГДА Я ДВИГАЮ ИГРОКОКА ОН ПОВОРАЧИВАЕТСЯ ТУДА КУДА СМОТРИТ МЫШКА - ЭТО ЕДИНСТВЕННЫЙ НЬЮАНС)



 
maxturboДата: Воскресенье, 24 Мая 2009, 18:42 | Сообщение # 15
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Оброщайся если что roll
 
maxturboДата: Воскресенье, 24 Мая 2009, 18:55 | Сообщение # 16
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Просто сделай чтоб камера автоматом выравнивалась по оси и все я уже сегодня не смогу расписать, будет время напишу позже!!!
 
UnodeyaДата: Воскресенье, 24 Мая 2009, 19:03 | Сообщение # 17
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Ща наобращаюсь) Возник ещё вопрос, когда открываю внутреигровое меню - не главное. Как поставить всё как бы на паузу. Чтобы пока я лазею в меню игропроцесс ждал меня)



 
maxturboДата: Воскресенье, 24 Мая 2009, 19:14 | Сообщение # 18
Профи
Группа: Участники
Сообщений: 379
Награды: 0
Замечания: 0%
Статус:

Профессия: Программер
Проектов: 1 в разработке
Попробуй так но все равно чучуть нето
Code

If mous=0
MoveMouse GraphicsWidth()*0.5,GraphicsHeight()*0.5
RenderWorld
EndIf
 
UnodeyaДата: Воскресенье, 24 Мая 2009, 21:14 | Сообщение # 19
Молодой но талантливый
Группа: Участники
Сообщений: 64
Награды: 0
Замечания: 0%
Статус:
Когда нажимаю идти вперед чтобы камера выравнивалась ! Очень важно помогите пожалуйста!

И ещё я заметил что если нажать вперед и вправо например игрок двигается по диагонали в два раза быстрее т.к прибавляются значения скорости вперед и вправо. Как решить эту проблемму?(






Сообщение отредактировал Unodeya - Вторник, 26 Мая 2009, 08:47
 
CostUmДата: Суббота, 30 Мая 2009, 04:40 | Сообщение # 20
MegaNoob on Igrostroenie.ru
Группа: Участники
Сообщений: 269
Награды: 0
Замечания: 40%
Статус:
maxturbo, слух парень, если сможеш могбы прилепить прошлый код про камеру к моему коду, ато у меня нихира неполучаетца(( если не лень канешно..
http://rapidshare.com/files/238915652/TPS.rar.html
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: