I decided to try using Lerp to dictate the movement for Attract mode,
but what i can only assume is because of the conversion from Float to Int, after a few times doing the movement it decides it doesnt want to go any further.
her is my code so far
int[,] attract = new int[,]
{
{400,300}, {300,300}, {300,400}, {300,430},
{100,430}, {100,500}, {100,500}, {10,300},
{100,300}, {100,100}, {300,100}, {300,50},
{500,50}, {500,300}, {500,250}, {290,250},
{500,300}, {500,400}, {400,400}, {540, 400},
{540,500}, {333,500}, {333,700}, {50,700},
{50,650}
};
private void attractMode()
{
huToPos = new Vector2(attract[attractPos,0], attract[attractPos,1]); // take the location of the next rubbish
PPos = Vector2.Lerp(huPos, huToPos, 0.04f); // use a lerp to move the human to rubbish
humanRectangle.X = (int)PPos.X; //changed actual rectangle
humanCollisionRect.X = (int)PPos.X; //changes collision detection rectangle
humanRectangle.Y = (int)PPos.Y; //changed actual rectangle
humanCollisionRect.Y = (int)PPos.Y; //changes collision detection rectangle
huPos = new Vector2(humanRectangle.X, humanRectangle.Y); // update the start potition of the lerp as to move it close and close to the human other wise it would keep reseting the lerp but we want a smooth movement
if (huPos == new Vector2(attract[attractPos,0],attract[attractPos,1]))
{
attractPos++;
}
if (attractPos == attract.Length/2) attractPos = 0;
}
but it gets as close to the third attract array values as 300, 381.95
and moves no further.
i cant figure out why it is never reaching 300,400
if i set the speed to a whole integer 1.00f then its goes through them all as it should, but if i lower into a 0.99 it doesn't and stops at said interval