8dir collisiondetection with tweening?!

BlitzMax Forums/BlitzMax Programming/8dir collisiondetection with tweening?!

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

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