Камера
Помогите пожалуйста сделать камеру,чтоб немного отставала ,заносила,
Похожую на "CASTLE" , но чтоб меньше виляла!Пожалуйста!!! |
Re: Камера
тебе отставание в повороте или отставание по позиции ?
или и то и то ? :) (как я помню, без интерполяции тут не обойтись) |
Re: Камера
При повороте
|
Re: Камера
Ну что, кто-нибудь поможет?
|
Re: Камера
ну как я понимаю :
делает пивот на месте игрока чепляеш к нему камеру пишеш изменение поворота игрока в какой нить буфер а потом через некоторое время читаеш его и исполняеш ети действия для пивота.. |
Re: Камера
Вот пример как я разобрался
Function sky() sky=CreateSphere(100) ScaleEntity sky,800,800,800 FlipMesh sky EntityFX sky,1 sky_tex=LoadTexture("ter/ne.jpg") EntityTexture sky,sky_tex End Function Function ligh() For i=1 To 100 Print "Light="+i li=CreateLight() PositionEntity li,Rnd(-500,500),15,Rnd(-500,500) Next End Function Function chit() If KeyDown(86)=1 And ch=0 Then Graphics 1024,768 chit$=Input$("Input you text") ch=1 If KeyDown(86)=1 And ch=1 Then chit$="" ch=0 End Function Function turbo() For i=1 To 100 Print "Загруженно "+i+" из 100" turb=LoadAnimMesh("ter\turbo.x") Animate turb,2 PositionEntity turb,Rnd(-500,500),0,Rnd(-500,500) ScaleEntity turb,1,1,1 EntityType turb,tur Next End Function Function el() For i=1 To 100 Print "Loading object...... "+i+"/500" elka=LoadMesh("ter\tr.x") ScaleEntity elka,Rnd(1,3),Rnd(1,5),Rnd(1,3) PositionEntity elka,Rnd(-500,500),-1,Rnd(-500,500) EntityType elka,stC Next End Function Function bot() End Function Function anim() ani=LoadAnimMesh("ter\anim.3ds") Animate ani,1 PositionEntity ani,0,0,20 EntityType ani,avC End Function Function TRAP() For i=1 To 100 Print "trap:"+ i tr=LoadMesh("ter\tr1.x") PositionEntity tr,Rnd(-500,500),0,Rnd(-500,500) EntityType tr,tra EntityRadius tr,10 Next End Function Function graund() ground=CreatePlane() EntityColor ground,0,100,0 ground_tex=LoadTexture("ter/gr.jpg") ScaleTexture ground_tex,10,10 EntityTexture ground,ground_tex EntityType ground,ter End Function Graphics3D 1024,768,32,0 SetBuffer BackBuffer() Const avC=1,stC=2,tra=3 Const tur=1 Const g#=1 Const ter=3 Global grav,vol# Global ch=0 Global fntArial fntArial=LoadFont("Arial Cry",24,False,False,False) Global windwave# lit=CreateLight(1) PositionEntity lit,0,200,0 auto=LoadMesh("ter\av6.3ds") cam=CreateCamera(auto) EntityType auto,avC EntityRadius auto,2 TranslateEntity auto,0,-G#,0 el() anim() graund() ani=LoadAnimMesh("ter\an.x") Animate ani,1 PositionEntity ani,10,0,50 EntityRadius ani,2 EntityType ani,avC sky() Global speed=0 Global t=100 Global s#=0 Global dist# Global tx#,ty#,tz#,ax#,ay#,az# Global pl#,sb# Collisions avC,stC,2,3 Collisions avC,ter,1,3 Collisions avC,avC,2,3 ;//********************************** For i=1 To 100 Print "Загруженно "+i+" из 100" turb=LoadAnimMesh("ter\turbo.x") Animate turb,1 PositionEntity turb,Rnd(-500,500),0,Rnd(-500,500) ScaleEntity turb,0.2,0.2,0.2 EntityType turb,tur Next ;//*********************************** auto2=LoadMesh("ter\car2.x") PositionEntity auto2,Rnd(-50,50),0,Rnd(-50,50) EntityRadius auto2,2 EntityType auto2,avC EntityPickMode auto2,2 EntityPickMode auto,2 gaz=LoadSound("ter\gaz.wav") LoopSound gaz SoundVolume gaz,0.1 PlaySound gaz PositionEntity auto,1,1,1 zdanie1=LoadMesh("ter\zd1.x") ScaleEntity zdanie1 ,3,3,3 PositionEntity zdanie1,-50,0,-20 zdanie2=LoadMesh("ter\zd2.x") ScaleEntity zdanie2 ,3,3,3 PositionEntity zdanie2,20,0,40 EntityType zdanie2,Avc EntityType zdanie1,Avc povV=0 povP=0 ;------------------------------------------------------------------------ ;------------------------------------------------------------------------ Repeat ;If PositionEntity auto,auto+1,auto-0.1,auto Then PositionEntity auto,auto+0.1,auto ;If PositionEntity auto, auto,auto+0.2,auto=1 Then PositionEntity auto,auto-0.2,auto sb=sb+0.003 PositionEntity cam,0+tx,4+ty,-10+tz ;BOT//////////////*************************** dist# = EntityDistance ( auto2, auto ) If dist > 1 TurnEntity auto2,0,Sgn(DeltaYaw(auto2,auto))*0.9,0 MoveEntity auto2,0,0,sb EndIf ;PositionEntity auto,xa#,ya#,za# If EntityCollided (auto2,avC) TurnEntity auto2,0,5,0 EndIf ;;//////////////////////***************************** If EntityCollided(auto,ter)=1 Then grav=grav+0.1 PositionEntity auto,0,grav,0 ;Управление камеры If KeyDown(78)=1 Then MoveEntity cam,0,0,.1 If KeyDown(74)=1 MoveEntity cam,0,0,-.1 ;------------------------------------------------------------ ; Управление Авто If s>=0 Then If KeyDown(200)=1 And KeyDown(54)=1 And t>=1 Then s=s+0.005 T=T-1 tz=tz-0.01 If KeyDown(54)=0 And tz<0 Then tz=tz+0.01 If KeyDown (57)=1 And s>0 Then s=s-.02 If KeyDown(200)=1 And speed<220 Then s=s+0.001 If KeyDown(200)=0 And s>0 And s<>0 Then s=s-0.01 End If If speed>220 Then s=s-0.001 ;------------------------------------------------------ If s<=0 Then If KeyDown (57)=1 And s<0 Then s=s+.02 If KeyDown(208)=1 And speed<60 Then s=s-0.001 If KeyDown(208)=0 And s<0 Then s=s+0.01 End If ;-------------------------------------------------------------- MoveEntity auto,0,0,s If KeyDown(203)And speed>0 And tx>-1 And pl<0.9Then TurnEntity auto,0,pl=pl+0.01,0 tx=tx-0.03 If KeyDown(203)=0 And tx<0 Then tx=tx+0.02 If KeyDown(203)And speed>0 Then TurnEntity auto,0,1,0 If KeyDown(205)And speed>0 And tx<1 And pl<0.9 Then TurnEntity auto,0,pl=pl-0.01,0 tx=tx+0.03 If KeyDown(203)=0 And tx>0 Then tx=tx-0.02 If KeyDown(205)And speed>0 Then TurnEntity auto,0,-1,0 ;---------------------------------------------------------------- If KeyDown(29) And KeyDown(56) And KeyDown(20) Then t =1000 If EntityCollided (auto,stC) s=s-0.01 ay=ay+1 If EntityCollided (auto,ter) ay=ay+1 If EntityCollided (auto,tur) Then t=t+10 PositionEntity turb,0,10,0 s=s-0.01 ay=ay+1 If speed>=0 Then speed=s*50 If speed<=0 Then speed=(s*10)^2 ;------------------------------------------------------------------------ ;------------------------------------------------------------------------ UpdateWorld RenderWorld SetFont fntArial Text 10,10,"SPEED="+speed+" km/h" Text 10,30,"TURBO="+t Flip Until KeyHit(1) End в выделеном участке есть управление камеры с замедлением пользуйся! |
Re: Камера
Thanks!
|
Re: Камера
А кто нибудь из вас играл в FreeLancer? Как там камера настроена? ваще сижу парюсь не допру так на близ перевести...
|
Re: Камера
Wins_Vega объясни поподробней чё как. как камера двигается ее поведение и т.п. мож помогу
|
Re: Камера
Ну, вроде этого:
http://wvg-development.ucoz.ru/load/7-1-0-39 Это я пытался сэмулировать управление камерой как во FreeLancer. Обнаружил кучу глюков с физикой и решил подключить DLL физики. Однако в ODE у мя так же сделать не получилось. Теперь может ФизX попробовать? |
Re: Камера
Цитата:
гм. после регистрации - акцес динайд. Как слить то??? |
Re: Камера
Wins_Vega слей сюды на страницу. А то регатся не хотца. А насчет физики то лучше юзать Newton - он легкий и функциональный( ИМХО даже очень )
|
Re: Камера
Ой, пардон, я доступ забыл открыть...
Все, теперь должно работать :) Цитата:
|
Re: Камера
Если прально понял то тама в игре камера движется плавно за курсором всегда.
А в чем собсно вопрос, ну врубил, имитация плавного движения и поворота камеры относительно параметров мыши по Х и У так или нет. По подробней разъясни что бы было понятно, а фиг знает как во FreeLancer движется камера Цитата:
|
Re: Камера
не, понажимай на F1,F2 и когда F2 мод, жми правую мышь. Вобщем проблема в том, что кораблик при плавном движении камеры по X,Y начинает наклоняться в бок и поворачиваться вместе с камерой, точнее камера ворочается вместе с ним(Вправо/влево). И главная фишка в том, что бы сделать тот же кораблик только в Нютоне например, как твердое тело.
Для этого при повороте кораблю задается torque, относительная, так? А как же тогда он наклоняться то будет в бок? Т.е наклонится и полит в сторону наклона, силы то к нему прикладываются относительные... В Близе я делал родительский объект, который и поворачивался с мышой, а корабль к нему прикреплялся и относительно вместе с ним вертелся, только еще и сам по себе наклонялся. А камера вокруг него летала в бок, для создания эффекта отставания. Так у мя в Близе были проблемы с физикой (хотя ее то там и нет по сути). Попробуй посталкиваться с кубиками. Главная проблема в создании похожего джоинта на физ движке. ODE, Fizx,Newton... Какой лучше? Их вроде регистрировать надо? Вобщем в ODE я не допер как похожий джоинт создать, чтоб 2 объекта и один из них относителен первого. Чтоб точно так же относительность задать, как делает Bliz3D если написать: MainObject=CreateCube() Object=CreateSphere(MainObject) |
Часовой пояс GMT +4, время: 01:00. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot