[B3D] Sachte Kameradrehung (Egoshooter)

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

timmeTheOnly

Betreff: [B3D] Sachte Kameradrehung (Egoshooter)

BeitragFr, Dez 21, 2007 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi, ich will auch mal meinen Teil beitragen.

Dieser Code mach aus abgehackten Kameradrehungen eine ganz flüssige:

Code: [AUSKLAPPEN]

Dim mouse_smoothness_x#(5)
Dim mouse_smoothness_y#(5)

Global mouse_speed_x# = 0.4
Global mouse_speed_y# = 0.4

Global mouse_limit_left = GraphicsWidth() / 2 - 50
Global mouse_limit_right = GraphicsWidth() / 2 + 50

Global mouse_limit_top = GraphicsHeight() / 2 - 50
Global mouse_limit_bottom = GraphicsHeight() / 2 + 50

Global mouse_center_x = GraphicsWidth() / 2
Global mouse_center_y = GraphicsHeight() / 2

Function mouse_update()
   
   ; Variables
   
   Local i = 0
   Local tmp_yaw# = 0, tmp_pitch# = 0
   
   ; Turning
   
   For i = 5 To 2 Step -1
      mouse_smoothness_x#(i) = mouse_smoothness_x#(i-1)
      mouse_smoothness_y#(i) = mouse_smoothness_y#(i-1)
   Next
   
   mouse_smoothness_x#(1) = MouseXSpeed()
   mouse_smoothness_y#(1) = MouseYSpeed()
   
   tmp_yaw#   = ((mouse_smoothness_x#(1)+mouse_smoothness_x#(2)+mouse_smoothness_x#(3)+mouse_smoothness_x#(4)+mouse_smoothness_x#(5))/5)*mouse_speed_x#
   tmp_pitch# = ((mouse_smoothness_y#(1)+mouse_smoothness_y#(2)+mouse_smoothness_y#(3)+mouse_smoothness_y#(4)+mouse_smoothness_y#(5))/5)*mouse_speed_y#
   
   tmp_pitch# = EntityPitch#(player_pivot) + tmp_pitch#
   tmp_yaw# = EntityYaw#(player_pivot) - tmp_yaw#
   
   If tmp_pitch# > 90 Then tmp_pitch# = 90
   If tmp_pitch# < -90 Then tmp_pitch# = -90
   
   RotateEntity player_pivot, tmp_pitch#, tmp_yaw#, 0
   
   ; Positioning
   
   If MouseX() < mouse_limit_left Or MouseX() > mouse_limit_right Or MouseY() < mouse_limit_top Or MouseY() > mouse_limit_bottom
      MoveMouse mouse_center_x, mouse_center_y
   EndIf
   
End Function


Idee stammt aus dem bb.com Codearchiv. Ist nur anders ausgeführt.

Viel Spaß damit, aufdass wir bald immer eine flüssige Kamerasteuerung bekommen ^^

Goodjee

BeitragDo, Jan 10, 2008 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
dankeschön...aber noch besser wäre es wenn du anstat playerpivot nen parameter cam hättest
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/
 

timmeTheOnly

BeitragDo, Jan 10, 2008 22:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Kein Problem:

Code: [AUSKLAPPEN]

Dim mouse_smoothness_x#(5)
Dim mouse_smoothness_y#(5)

Global mouse_speed_x# = 0.4
Global mouse_speed_y# = 0.4

Global mouse_limit_left = GraphicsWidth() / 2 - 50
Global mouse_limit_right = GraphicsWidth() / 2 + 50

Global mouse_limit_top = GraphicsHeight() / 2 - 50
Global mouse_limit_bottom = GraphicsHeight() / 2 + 50

Global mouse_center_x = GraphicsWidth() / 2
Global mouse_center_y = GraphicsHeight() / 2

Function mouse_update(piv)
   
   ; Variables
   
   Local i = 0
   Local tmp_yaw# = 0, tmp_pitch# = 0
   
   ; Turning
   
   For i = 5 To 2 Step -1
      mouse_smoothness_x#(i) = mouse_smoothness_x#(i-1)
      mouse_smoothness_y#(i) = mouse_smoothness_y#(i-1)
   Next
   
   mouse_smoothness_x#(1) = MouseXSpeed()
   mouse_smoothness_y#(1) = MouseYSpeed()
   
   tmp_yaw#   = ((mouse_smoothness_x#(1)+mouse_smoothness_x#(2)+mouse_smoothness_x#(3)+mouse_smoothness_x#(4)+mouse_smoothness_x#(5))/5)*mouse_speed_x#
   tmp_pitch# = ((mouse_smoothness_y#(1)+mouse_smoothness_y#(2)+mouse_smoothness_y#(3)+mouse_smoothness_y#(4)+mouse_smoothness_y#(5))/5)*mouse_speed_y#
   
   tmp_pitch# = EntityPitch#(piv) + tmp_pitch#
   tmp_yaw# = EntityYaw#(piv) - tmp_yaw#
   
   If tmp_pitch# > 90 Then tmp_pitch# = 90
   If tmp_pitch# < -90 Then tmp_pitch# = -90
   
   RotateEntity piv, tmp_pitch#, tmp_yaw#, 0
   
   ; Positioning
   
   If MouseX() < mouse_limit_left Or MouseX() > mouse_limit_right Or MouseY() < mouse_limit_top Or MouseY() > mouse_limit_bottom
      MoveMouse mouse_center_x, mouse_center_y
   EndIf
   
End Function


[EDIT2]

Ausgebessert...
  • Zuletzt bearbeitet von timmeTheOnly am Fr, Jan 11, 2008 16:52, insgesamt einmal bearbeitet

Goodjee

BeitragFr, Jan 11, 2008 13:50
Antworten mit Zitat
Benutzer-Profile anzeigen
biste sicher das das funzt???


Zitat:
tmp_pitch# = EntityPitch#(player_pivot) + tmp_pitch#
tmp_yaw# = EntityYaw#(player_pivot) - tmp_yaw#
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group