heres another attempt:
'angle If KeyDown(KEY_UP) And KeyDown(KEY_LEFT) player.angle = 135 Else If KeyDown(KEY_UP) And KeyDown(KEY_RIGHT) player.angle = 45 Else If KeyDown(KEY_DOWN) And KeyDown(KEY_LEFT) player.angle = 225 Else If KeyDown(KEY_DOWN) And KeyDown(KEY_RIGHT) player.angle = 315 Else If KeyDown(KEY_UP) player.angle = 90 Else If KeyDown(KEY_DOWN) player.angle = 270 Else If KeyDown(KEY_LEFT) player.angle = 180 Else If KeyDown(KEY_RIGHT) player.angle = 0 End If 'speed If KeyDown(KEY_UP) And KeyDown(KEY_LEFT) 'And Not player.detector.detectors[0] player.speed = player.speed + 0.5 Else If KeyDown(KEY_UP) And KeyDown(KEY_RIGHT) 'And Not player.detector.detectors[2] player.speed = player.speed + 0.5 Else If KeyDown(KEY_DOWN) And KeyDown(KEY_LEFT) 'And Not player.detector.detectors[5] player.speed = player.speed + 0.5 Else If KeyDown(KEY_DOWN) And KeyDown(KEY_RIGHT) 'And Not player.detector.detectors[7] player.speed = player.speed + 0.5 Else If KeyDown(KEY_UP) 'And Not player.detector.detectors[1] player.speed = player.speed + 0.5 Else If KeyDown(KEY_DOWN) 'And Not player.detector.detectors[6] player.speed = player.speed + 0.5 Else If KeyDown(KEY_LEFT) 'And Not player.detector.detectors[3] player.speed = player.speed + 0.5 Else If KeyDown(KEY_RIGHT) 'And Not player.detector.detectors[4] player.speed = player.speed + 0.5 Else player.speed = player.speed / 3 End If 'limit speed If player.speed < 0.5 player.speed = 0 If player.speed > player.maxspeed player.speed = player.maxspeed If player.speed > 0 player.vx = Cos(player.angle) '* (player.speed * 32) / (1000.0 / Float(update_time)) player.vy = -Sin(player.angle) '* (player.speed * 32) / (1000.0 / Float(update_time)) Else player.vx = 0 player.vy = 0 End If player.oldx = player.x player.oldy = player.y 'collisions ResetCollisions() RenderLayer(World, WorldX, WorldY, WorldZ, player.layer, player.x, player.y, 1) Local x:Int Local y:Int For x = 1 To Abs(Ceil(player.vx)) If player.vx > 0 Then If Not CollideImage(player.shadow, player.x + 1, player.y, 0, COLLISION_LAYER_1, 0) player.x = player.x + 1 Else player.x = player.oldx player.speed = 0 End If Else If Not CollideImage(player.shadow, player.x - 1, player.y, 0, COLLISION_LAYER_1, 0) player.x = player.x - 1 Else player.x = player.oldx player.speed = 0 End If End If Next For y = 1 To Abs(Ceil(player.vy)) If player.vy > 0 Then If Not CollideImage(player.shadow, player.x, player.y + 1, 0, COLLISION_LAYER_1, 0) player.y = player.y + 1 Else player.y = player.oldy player.speed = 0 End If Else If Not CollideImage(player.shadow, player.x, player.y - 1, 0, COLLISION_LAYER_1, 0) player.y = player.y - 1 Else player.y = player.oldy player.speed = 0 End If End If Next