[B3D] Camera Shake
Übersicht

![]() |
ZaPBetreff: [B3D] Camera Shake |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hiho!
Der Code an sich ist zwar simpel, ich dachte mir aber ich stells mal trotzdem hier rein: Mit diesem Code kann man die Kamera schütteln lassen, wenn man z.b. ein Erdbeben simuliert, oder neben einer Explosion steht. Das ganze läuft Frame-unabhängig, und man kann die Schüttelstärke einstellen. Man muss vorm einbau einige Variablen übernehmen, und die Update() Funktion in die Hauptschleife einbauen. Schütteln tut man mit dieser Funktion: Shake_Cam(Camera, [Strenght]) Camera: Das Kamera-entity, welches geschüttelt werden soll Strenght: Die Stärke des Schüttelns (Standard: 1000) Viel Spaß damit ^^ Code: [AUSKLAPPEN] ;Camera-Shaker by ZaP =)
Graphics3D 640,480,16,2 SetBuffer BackBuffer() ;random map erstellen l = createLight() PositionEntity l,0,20,0 CreatePlane() For i=0 To 20 c = CreateCube() PositionEntity c,rnd(-10,10),rnd(1,3),rnd(-10,10) EntityColor c,rnd(0,255),rnd(0,255),rnd(0,255) Next ;camera machen Global cam = CreateCamera() PositionEntity cam,0,5,-10 ;globale variablen für die Delta-Zeit Global Delta_Time# = 0 Global oldtime = MilliSecs() ;globale variablen für das shaken ^^ Global shake# = 0 Global CamCenterX# = 0 Global CamCenterY# = 0 stren = 1000 Repeat UpdateWorld RenderWorld update() If KeyHit(57) ;leertaste shake_cam(cam, stren) endif If KeyHit(78) ;+ stren = stren+100 EndIf If KeyHit(74) ;- stren = stren-100 endif Text 0,0,"Space drücken, um kräftig durchgeschüttelt zu werden," Text 0,16,"+/- (Ziff. Bl.), um Stärke zu ändern." Text 0,32,"Stärke: "+stren Flip Until keyhit(1) Function Update() ;Zeitänderung seit dem letzten Frame berechnen Delta_Time# = MilliSecs()-oldtime oldtime = MilliSecs() ;Schütteln, wenn Shake > 0 If shake# > 0 ;von Shake die Delta-Zeit abziehen, um es FPS unabhängig zu machen shake# = shake#-Delta_Time# ;camera zufällig um den Zentralpunkt drehen lassen RotateEntity cam,CamCenterX#+rnd(shake#/100),CamCenterY#+rnd(shake#/100),0 endif End function Function Shake_cam(camera, strenght# = 1000) shake# = strenght# ;shake bestimmt Stärke und Dauer des Schüttelns CamCenterX# = EntityPitch(camera) CamCenterY# = EntityYaw(camera) End function End |
||
Starfare: Worklog, Website (download) |
![]() |
The_Nici |
![]() Antworten mit Zitat ![]() |
---|---|---|
Länge und Stärke sollten getrennt werden.
Wenn man mehrmals während dem schütteln die Leertaste drückt, dreht sich die Kamera so, dass sie nichtmehr zurückdreht. |
||
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte befürchtet dass jemand so kleinlich ist =)
Dann musst du es so ändern dass man nur Shaken kann wenn grad nicht geshakt wird ^^ |
||
Starfare: Worklog, Website (download) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group