मैं अपने टाइल आधारित प्लेटफ़ॉर्मर में सरल 45 ° ढलान रखना चाहता हूं, हालांकि मैं एल्गोरिथ्म को नीचे लाने के लिए बस नहीं कर सकता हूं। कृपया कोड और वीडियो पर एक नज़र डालें, शायद मुझे स्पष्ट याद आ रही है?
//collisionRectangle is the collision rectangle of the player with
//origin at the top left and width and height
//wantedPosition is the new position the player will be set to.
//this is determined elsewhere by checking the bottom center point of the players rect
if(_leftSlope || _rightSlope)
{
//Test bottom center point
var calculationPoint = new Vector2(collisionRectangle.Center.X, collisionRectangle.Bottom);
//Get the collision rectangle of the tile, origin is top-left
Rectangle cellRect =
_tileMap.CellWorldRectangle(
_tileMap.GetCellByPixel(calculationPoint));
//Calculate the new Y coordinate depending on if its a left or right slope
//CellSize = 8
float newY = _leftSlope
? (calculationPoint.X % CellSize) + cellRect.Y
: (-1 * (calculationPoint.X % CellSize) - CellSize) + cellRect.Y;
//reset variables so we dont jump in here next frame
_leftSlope = false;
_rightSlope = false;
//now change the players Y according to the difference of our calculation
wantedPosition.Y += newY - calculationPoint.Y;
}
यह कैसा दिखता है, इसका वीडियो: http://youtu.be/EKOWgD2muoc