I have a top down game where things sometimes go off the screen and you want to know where they are to go get them. I want markers on the edge of the screen to show where the target item is. I have tried a couple different strategies and none of them seem to be working. Here is my current one in case that helps.
Vector2 screenRatio = new Vector2(camera.Width, camera.Height);
screenRatio.Normalize();
Vector2 distance = snakePellets.worldPosition - snake.Head.worldPosition;
distance.Normalize();
if (distance.X / distance.Y > (float)camera.Width / (float)camera.Height)
{
snakePellets.worldPosition.X = distance.X < 0 ? camera.position.X + 20 : camera.position.X + camera.Width - 20;
snakePellets.worldPosition.Y = MathHelper.Lerp(camera.Height / 2, camera.position.Y + camera.Height - 20, distance.Y / screenRatio.Y);
}
else
{
snakePellets.worldPosition.X = MathHelper.Lerp(camera.Width / 2, camera.position.X + camera.Width - 20, distance.X / screenRatio.X);
snakePellets.worldPosition.Y = distance.Y < 0 ? camera.position.Y + 20 : camera.position.Y + camera.Height - 20;
}
camera.draw(spriteBatch, snakePellets);
snakePellets.worldPosition = oldPos;
Using c#/xna. The snakePellets is the item I want to make a pointer to. I am currently just moving it to where I want the pointer to be, drawing it, then moving it back. This is all assuming the snake pellet is off the screen.