I'd recommend using the angle between your player object as a whole and the item to determine if the head should be pointed at it or not. This can be done using the dot product of two heading vectors on the XZ plane, one for the player's forward direction and one for a dummy object that is set to always look at the item.
SetWindowSize(1280,720,0)
SetVirtualResolution(1280, 720)
oPlayer = CreateObjectBox(0.4, 2, 0.25)
oItem = CreateObjectBox(0.5, 0.5, 0.5)
SetObjectPosition(oItem, 0, 0, 5)
// dummy object to look at item object
oDummy = CreateObjectBox(0.1, 0.1, 2)
// vectors to store headings
hvDummy = CreateVector3()
hvPlayer = CreateVector3()
MoveCameraLocalZ(1,18)
while not GetRawKeyPressed(27)
delta# = GetFrameTime()
// handle rotation
turn# = (GetRawKeyState(68) - GetRawKeyState(65))
RotateObjectGlobalY(oPlayer, turn# * 90 * delta#)
// handle movement
move# = (GetRawKeyState(87) - GetRawKeyState(83))
MoveObjectLocalZ(oPlayer, move# * 4.0 * delta#)
// set dummy object position to player position on XZ plane only
SetObjectPosition(oDummy, GetObjectX(oPlayer), 0, GetObjectZ(oPlayer))
// set dummy object to look at item position on the XZ plane only
SetObjectLookAt(oDummy, GetObjectX(oItem), 0, GetObjectZ(oItem), 0)
// set heading vectors for dummy and player on XZ plane
SetVector3(hvDummy, cos(GetObjectAngleY(oDummy)), 0, sin(GetObjectAngleY(oDummy)))
SetVector3(hvPlayer, cos(GetObjectAngleY(oPlayer)), 0, sin(GetObjectAngleY(oPlayer)))
// get the dot product of the two heading vectors
hvDot# = GetVector3Dot(hvDummy, hvPlayer)
// if dot product < 0, then the angle from player to item is > 90 degrees
if hvDot# >= 0
print("In range!")
else
print("NOT in range!")
endif
print(hvDot#)
print("")
print("Move with WASD")
sync()
endwhile