I have recreated an example that shows exactly my problem in a few lines. Use ArrowUp and ArrowDown to control the player into the shadow. As soon as the player is fully in the shadow of the wall (tunnel), the shadow dissapears, meanwhile I will further check on your responses. thanks again for all your help

`//Utility Class`

TYPE Txyz

x;y;z

ENDTYPE

//Create Coordinates

GLOBAL pl AS Txyz ; pl.x = -0; pl.y = 0; pl.z = 10 //Player

GLOBAL cam AS Txyz ; cam.x = -50; cam.y = 0; cam.z = 10 //Cam

GLOBAL li AS Txyz ; li.x = -100; li.y = -400; li.z = 500 //Light

GLOBAL pr AS Txyz ; pr.x = 0; pr.y = 0; pr.z = -250 //Road

GLOBAL po AS Txyz ; po.x = 100; po.y = -75; po.z = 0 //Obstacle (Wall)

//Create Objects

GLOBAL player = GENX_OBJ() ; CreateSphere(player,5,10,RGB(255,0,0))

GLOBAL skybox = GENX_OBJ() ; CreateCube(skybox,3000,RGB(40,40,100))

GLOBAL road = GENX_OBJ() ; CreateCube(road,500,RGB(100,100,100))

GLOBAL obstacle = GENX_OBJ(); CreateCube(obstacle,100,RGB(130,10,130))

//Mainloop

WHILE TRUE

X_MAKE3D 1,2000,90

X_CAMERAUP 0,0,1

X_CAMERA cam.x,cam.y,cam.z,pl.x,pl.y,pl.z

//Draw skybox

X_CULLMODE -1

X_DRAWOBJ skybox,0

X_CLEAR_Z

X_CULLMODE 1

//Draw scene

X_MOVEMENT pr.x,pr.y,pr.z ; X_DRAWOBJ road,0

X_MOVEMENT po.x,po.y,po.z ; X_DRAWOBJ obstacle,0

X_MOVEMENT pl.x,pl.y,pl.z ; X_DRAWOBJ player,0

//Shadow light

X_SPOT_LT -3,0,li.x,li.y,li.z,0,0,0,360

//Draw scene again

X_MOVEMENT pr.x,pr.y,pr.z ; X_DRAWOBJ road,0

X_MOVEMENT po.x,po.y,po.z ; X_DRAWOBJ obstacle,0

X_MOVEMENT pl.x,pl.y,pl.z ; X_DRAWOBJ player,0

X_MAKE2D

SHOWSCREEN

//Movement Player

IF KEY(200); INC pl.x; INC cam.x; ENDIF

IF KEY(208); DEC pl.x; DEC cam.x; ENDIF

WEND

//Utility Functions

FUNCTION CreateSphere: num, r, n, col

LOCAL i,j, theta1, theta2, theta3, pi

pi = ACOS(0)*2

IF r < 0 THEN r = -r

IF n < 4 THEN n = 4

X_AUTONORMALS 2 // smooth edges

X_OBJSTART num

FOR j=0 TO INTEGER(n/2) -1

theta1 = j * 2*pi / n - pi/2;

theta2 = (j + 1) * 2*pi / n - pi/2;

FOR i=0 TO n

theta3 = i * 2*pi / n;

X_OBJADDVERTEX r*COS(theta2) * COS(theta3), r*SIN(theta2), _

r*COS(theta2) * SIN(theta3), i/n, 2*(j+1)/n, col

X_OBJADDVERTEX r*COS(theta1) * COS(theta3), r*SIN(theta1), _

r*COS(theta1) * SIN(theta3), i/n, 2*j/n, col

NEXT

X_OBJNEWGROUP

NEXT

X_OBJEND

ENDFUNCTION // n

FUNCTION CreateCube: num, sz, col

// Diese Variablen sind als LOCAL definiert:

// num, sz,

X_AUTONORMALS 1 // For a cube, hard edges

sz=sz/2

X_OBJSTART num

// Front Face

X_OBJADDVERTEX sz, -sz, sz, 1, 0, col

X_OBJADDVERTEX -sz, -sz, sz, 0, 0, col

X_OBJADDVERTEX sz, sz, sz, 1, 1, col

X_OBJADDVERTEX -sz, sz, sz, 0, 1, col

X_OBJNEWGROUP

// Back Face

X_OBJADDVERTEX -sz, sz, -sz, 1, 1, col

X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col

X_OBJADDVERTEX sz, sz, -sz, 0, 1, col

X_OBJADDVERTEX sz, -sz, -sz, 0, 0, col

X_OBJNEWGROUP

// Top Face

X_OBJADDVERTEX -sz, sz, sz, 0, 0, col

X_OBJADDVERTEX -sz, sz, -sz, 0, 1, col

X_OBJADDVERTEX sz, sz, sz, 1, 0, col

X_OBJADDVERTEX sz, sz, -sz, 1, 1, col

X_OBJNEWGROUP

// Bottom Face

X_OBJADDVERTEX sz, -sz, -sz, 0, 1, col

X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col

X_OBJADDVERTEX sz, -sz, sz, 0, 0, col

X_OBJADDVERTEX -sz, -sz, sz, 1, 0, col

X_OBJNEWGROUP

// Right face

X_OBJADDVERTEX sz, sz, -sz, 1, 1, col

X_OBJADDVERTEX sz, -sz, -sz, 1, 0, col

X_OBJADDVERTEX sz, sz, sz, 0, 1, col

X_OBJADDVERTEX sz, -sz, sz, 0, 0, col

X_OBJNEWGROUP

// Left Face

X_OBJADDVERTEX -sz, -sz, sz, 1, 0, col

X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, col

X_OBJADDVERTEX -sz, sz, sz, 1, 1, col

X_OBJADDVERTEX -sz, sz, -sz, 0, 1, col

X_OBJNEWGROUP

X_OBJEND

ENDFUNCTION // sz