Well, yeah
I have a program where you move a cube around. I'd like to make the turning more realistic, with better lag type stuff. First, it always had the same angle and looked really bad, but now it is a little better.
Use the + and - on the numpad to zoom in or out. Use the 8(Up) and 2(Down) on the numpad to adjust camera height. Just don't do it too much, it messes up when you go past straight above or below. In the beginning, zoom out a little(-) and move the camera up(8).
Any ideas?
[EDIT] Forgot the source
SYNC ON
SYNC RATE 70
AUTOCAM OFF
POSITION CAMERA 0, 5, -2.5
POINT CAMERA 0, 0, 0
GLOBAL Direction AS INTEGER
GLOBAL Dif AS INTEGER
GLOBAL Turn AS INTEGER
GLOBAL Move AS INTEGER
GLOBAL Height AS FLOAT
GLOBAL Distance AS FLOAT
DIM AngleDim(50) AS FLOAT
`LOAD OBJECT "Robot.x", 1
MAKE OBJECT CUBE 1, 1
MAKE OBJECT CUBE 2, 0.5
HIDE OBJECT 2
MAKE OBJECT BOX 3, 1, .25, 1
POSITION OBJECT 3, 2, 0.125, 2
MAKE OBJECT CUBE 4, 0.5
POSITION OBJECT 4, 2, -0.5, 2
HIDE OBJECT 4
MAKE OBJECT BOX 5, 1, .25, 1
POSITION OBJECT 5, -1, 0.125, 2
MAKE OBJECT CUBE 6, 0.5
POSITION OBJECT 6, -1, -0.5, 2
HIDE OBJECT 6
DO
Move(OBJECT COLLISION(2, 0))
SYNC
LOOP
FUNCTION Move(Collision AS INTEGER)
IF Move = 0 AND Turn = 0
IF LEFTKEY()
Turn = -20
ENDIF
IF RIGHTKEY()
Turn = 20
ENDIF
IF UPKEY() AND OBJECT COLLISION(2, 0) = 0
Move = 20
ENDIF
ENDIF
IF Turn <> 0
YROTATE OBJECT 1, OBJECT ANGLE Y(1) + Turn / ABS(Turn) * 4.5
Turn = Turn - (Turn / ABS(Turn) / 20)
Move = 0
ELSE
IF Move <> 0
MOVE OBJECT 1, 0.05
MOVE = Move - 0.5
ENDIF
ENDIF
FOR i = 5 TO 2 STEP -1
AngleDim(i) = AngleDim(i - 1)
NEXT i
AngleDim(1) = OBJECT ANGLE Y(1)
IF OBJECT ANGLE Y(1) >= 360 THEN YROTATE OBJECT 1, OBJECT ANGLE Y(1) - 360
IF OBJECT ANGLE Y(1) < 0 THEN YROTATE OBJECT 1, OBJECT ANGLE Y(1) + 360
POSITION OBJECT 2, OBJECT POSITION X(1) + SIN(OBJECT ANGLE Y(1)), -0.5, OBJECT POSITION Z(1) + COS(OBJECT ANGLE Y(1))
POSITION CAMERA OBJECT POSITION X(1), 5, OBJECT POSITION Z(1)
POINT CAMERA OBJECT POSITION X(1), 0, OBJECT POSITION Z(1)
Distance = Distance + (0.1*KEYSTATE(78)) - (0.1*KEYSTATE(74))
Height = Height + (0.1*KEYSTATE(72)) - (0.1*KEYSTATE(80))
SET CURSOR 0,0
PRINT STR$(SCREEN FPS()) + " FPS"
POSITION CAMERA 0, OBJECT POSITION X(1) - SIN(AngleDim(5) - 25)*SQRT(Distance^2 - Height^2), Height, OBJECT POSITION Z(1) - COS(AngleDim(5) - 25)*SQRT(Distance^2 - Height^2)
POINT CAMERA OBJECT POSITION X(1), 0, OBJECT POSITION Z(1)
ENDFUNCTION