Поворот мышкой
| |
odment | Дата: Среда, 07.09.2011, 21:19 | Сообщение # 1 |
ламер
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
| Делаю игрулю от третьего лица, и столкнулся с проблемой, что негде не объясняется как повернуть объект мышью, как в гта. Очень надеюсь на помощь.
|
|
| |
Spidy | Дата: Среда, 07.09.2011, 21:54 | Сообщение # 2 |
Полковник
Группа: Модераторы
Сообщений: 339
Награды: 6
Репутация: 13
Статус: Offline
| Вот посмотри примерчик, а по поводу вопроса объясни что должно происходить с камерой и объектом.
Компьютерная мышь ночью собирает крошки у тебя со стола и прячет их в клавиатуру, делает запасы на зиму
Сообщение отредактировал Spidy - Среда, 07.09.2011, 22:01 |
|
| |
odment | Дата: Четверг, 08.09.2011, 06:55 | Сообщение # 3 |
ламер
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
| То что в этом примере делаешь стрелками, мне надо сделать мышью.
|
|
| |
MishanayCool | Дата: Четверг, 08.09.2011, 11:36 | Сообщение # 4 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Так примерно: Code Global newvalue#,oldvalue#,increments,mx#,my#,camera,cube,pitch#,yaw#,cameraX#,cameraY#,cameraZ#,cx#,cz# Global mousespeed#=.2,cameraspeed#=.5,camerasmoothness#=3
Graphics3D 800,600,0,2 SetBuffer BackBuffer()
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Global hero=1,cam_hero=2,col=3
Arial=LoadFont("Arial",16,True,False,False) SetFont Arial
light=CreateLight() RotateEntity light,90,0,0
camera=CreateCamera() EntityRadius camera,2 CameraRange camera,1,1000 EntityType camera,cam_hero
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
cube=CreateCube():ScaleEntity cube,1,2,1 PositionEntity cube,100,100,100 EntityRadius cube,2 EntityType cube,hero
terrain=LoadTerrain( "3iV82Lf9.bmp" ) EntityType terrain,col PositionEntity terrain,0,-80,0 TerrainDetail terrain,4000,True ScaleEntity terrain,1,110,1 grass_tex=LoadTexture( "ItoCCTVR.jpg" ) ScaleTexture grass_tex,55,55 EntityTexture terrain,grass_tex,0,1 Flip
Collisions hero,col,2,3 Collisions cam_hero,col,2,2 While Not KeyDown( 1 )
CameraMoveHero#(cube) ;в скобках указываем объект-родитель, к которому будет привязана камера
UpdateWorld RenderWorld Text 10,10,"camX#="+camX# Text 10,25,"camY#="+camY# Text 10,40,"camZ#="+camZ# Text 10,55,"pitch#="+pitch# Text 10,70,"yaw#="+yaw#
Flip Wend End
Function CurveValue#(newvalue#,oldvalue#,increments ) If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments If increments<=1 oldvalue=newvalue Return oldvalue# End Function
Function CameraMoveHero#(hero) mx#=CurveValue(MouseXSpeed()*mousespeed#,mx#,camerasmoothness#) my#=CurveValue(MouseYSpeed()*mousespeed#,my#,camerasmoothness#) MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 pitch#=EntityPitch(camera) yaw#=EntityYaw(camera) pitch#=pitch#+my# yaw#=yaw#-mx# If pitch#>89 pitch#=89 If pitch#<-89 pitch#=-89 RotateEntity camera,0,yaw#,0 RotateEntity hero,0,yaw#,0 TurnEntity camera,pitch#,0,0 cx#=(KeyDown(32)-KeyDown(30))*cameraspeed# cz#=(KeyDown(17)-KeyDown(31))*cameraspeed# MoveEntity hero,cx#,0,cz# RotateEntity hero,0,yaw#,0 TranslateEntity hero,0,-.3,0 EntityType camera,0 PositionEntity camera,EntityX#(hero),EntityY#(hero)+8,EntityZ#(hero) EntityType camera,cam_hero MoveEntity camera,0,-3,-15 cameraX#=EntityX#(hero) cameraY#=EntityY#(hero) cameraZ#=EntityZ#(hero) End Function
Вот картинки для тиррэйна, рядом с приложением положи.
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Четверг, 08.09.2011, 11:44 |
|
| |
odment | Дата: Четверг, 08.09.2011, 12:04 | Сообщение # 5 |
ламер
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо Большущие , а курсор как скрыть?
Сообщение отредактировал odment - Четверг, 08.09.2011, 12:14 |
|
| |
MishanayCool | Дата: Четверг, 08.09.2011, 12:13 | Сообщение # 6 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Quote а курсор как скрыть? HidePointer Если в полный экран (Graphics3D 800,600,0,1) , то курсора не будет и без этой команды. Вообще этот вариант не совсем как в GTA, в игре камера не привязана жёстко к спине. Так правильней: Code Global newvalue#,oldvalue#,increments,mx#,my#,camera,cube,pitch#,yaw#,cameraX#,cameraY#,cameraZ#,cx#,cz# Global mousespeed#=.2,cameraspeed#=.5,camerasmoothness#=3
Graphics3D 800,600,0,1 SetBuffer BackBuffer()
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Global hero=1,cam_hero=2,col=3
Arial=LoadFont("Arial",16,True,False,False) SetFont Arial
light=CreateLight() RotateEntity light,90,0,0
camera=CreateCamera() EntityRadius camera,2 CameraRange camera,1,1000 EntityType camera,cam_hero
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
cube=CreateCube():ScaleEntity cube,1,2,1 PositionEntity cube,100,100,100 EntityRadius cube,2 EntityType cube,hero
terrain=LoadTerrain( "3iV82Lf9.bmp" ) EntityType terrain,col PositionEntity terrain,0,-80,0 TerrainDetail terrain,4000,True ScaleEntity terrain,1,110,1 grass_tex=LoadTexture( "ItoCCTVR.jpg" ) ScaleTexture grass_tex,55,55 EntityTexture terrain,grass_tex,0,1 Flip
Collisions hero,col,2,3 Collisions cam_hero,col,2,2 While Not KeyDown( 1 )
CameraMoveHero#(cube)
UpdateWorld RenderWorld Text 10,10,"camX#="+camX# Text 10,25,"camY#="+camY# Text 10,40,"camZ#="+camZ# Text 10,55,"pitch#="+pitch# Text 10,70,"yaw#="+yaw#
Flip Wend
End
Function CurveValue#(newvalue#,oldvalue#,increments ) If increments>1 oldvalue#=oldvalue#-(oldvalue#-newvalue#)/increments If increments<=1 oldvalue=newvalue Return oldvalue# End Function
Function CameraMoveHero#(hero)
mx#=CurveValue(MouseXSpeed()*mousespeed#,mx#,camerasmoothness#) my#=CurveValue(MouseYSpeed()*mousespeed#,my#,camerasmoothness#) MoveMouse GraphicsWidth()/2,GraphicsHeight()/2 pitch#=EntityPitch(camera) yaw#=EntityYaw(camera) pitch#=pitch#+my# yaw#=yaw#-mx# If pitch#>89 pitch#=89 If pitch#<-89 pitch#=-89 RotateEntity camera,0,yaw#,0 TurnEntity camera,pitch#,0,0
If KeyDown(17) Then MoveEntity hero,0,0,.5 If KeyDown(31) Then MoveEntity hero,0,0,-.25 If KeyDown(32) Then TurnEntity hero,0,-3,0 If KeyDown(30) Then TurnEntity hero,0,3,0
TranslateEntity hero,0,-.3,0 EntityType camera,0 PositionEntity camera,EntityX#(hero),EntityY#(hero)+8,EntityZ#(hero) EntityType camera,cam_hero MoveEntity camera,0,-3,-15 cameraX#=EntityX#(hero) cameraY#=EntityY#(hero) cameraZ#=EntityZ#(hero) End Function
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Четверг, 08.09.2011, 20:09 |
|
| |
odment | Дата: Четверг, 08.09.2011, 16:08 | Сообщение # 7 |
ламер
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
| Оно не удобное, а вообще где ты этому научился?
Сообщение отредактировал odment - Четверг, 08.09.2011, 16:39 |
|
| |
MishanayCool | Дата: Четверг, 08.09.2011, 19:55 | Сообщение # 8 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Просто в GTA, когда двигаешь героем(клавишами), камера плавно отходит к спине(хотя сейчас у меня, игр от третьего лица не установлено, может я ошибаюсь). Значит используй первый вариант, кому-то возможно больше подойдёт второй.
Quote где ты этому научился? Сам Blitz3D изучал в домашних условиях, а код... Просто подумал
Кстати тут ещё пару идей, довести код до ума, но если тебя всё устраивает, то я закончил
MiniDemo3D - Blitz3D
Сообщение отредактировал MishanayCool - Пятница, 09.09.2011, 07:13 |
|
| |
odment | Дата: Пятница, 09.09.2011, 18:30 | Сообщение # 9 |
ламер
Группа: Пользователи
Сообщений: 8
Награды: 0
Репутация: 0
Статус: Offline
| Спасибо за помощь, какие игры ты уже сделал? Исходники можешь дать?
|
|
| |
MishanayCool | Дата: Суббота, 10.09.2011, 22:56 | Сообщение # 10 |
разработчик
Группа: Пользователи
Сообщений: 226
Награды: 11
Репутация: 20
Статус: Offline
| Quote какие игры ты уже сделал? Только демошки, на большее к сожалению терпелки не хватает.
MiniDemo3D - Blitz3D
|
|
| |
|