public void CheckMapCollision(Map pMap) { if (CollisionBox.Right > pMap.AccessArea.Right) { PositionX = pMap.AccessArea.Right - CollisionBox.Width; mSpeedX = 0; mSpeedX = 0; } else if (CollisionBox.Left < pMap.AccessArea.Left) { PositionX = pMap.AccessArea.Left; mSpeedX = 0; mSpeedX = 0; } if (CollisionBox.Bottom > pMap.AccessArea.Bottom) { PositionY = pMap.AccessArea.Bottom - CollisionBox.Height; mSpeedY = 0; mSpeedY = 0; mJumping = false; } else if (CollisionBox.Top < pMap.AccessArea.Top) { PositionY = pMap.AccessArea.Top; mSpeedY = 0; mSpeedY = 0; } }
protected void UpdateMovement(Map pMap) { double TmpSpeed = mSpeedX; HandleInput(); if (mSpeedX == TmpSpeed) PerformStaticFriction(); PerformGravity(); PerformAirFriction(); PerformRecoil(pMap); Move(Speed, pMap); Console.WriteLine(mSpeedX.ToString() + " " + mSpeedY.ToString()); }
protected void PerformRecoil(Map pMap) { if (((int)mSpeedX > 0 && TmpCollisionCheckedVector(CollisionBox, (int)mSpeedX, 0, pMap.mBlocks).X == 0) || ((int)mSpeedX < 0 && TmpCollisionCheckedVector(CollisionBox, (int)mSpeedX, 0, pMap.mBlocks).X == 0) ) { mSpeedX = -mSpeedX * RecoilX; } if (((int)mSpeedY > 0 && TmpCollisionCheckedVector(CollisionBox, 0, (int)mSpeedY, pMap.mBlocks).Y == 0) || ((int)mSpeedY < 0 && TmpCollisionCheckedVector(CollisionBox, 0, (int)mSpeedY, pMap.mBlocks).Y == 0) ) { if ((int)(-mSpeedY * RecoilY) == 0 && mSpeedY > 0) mJumping = false; mSpeedY = -mSpeedY * RecoilY; } }
public void Update(Map pMap) { UpdateMovement(pMap); }
public void Move(int pDeltaX, int pDeltaY, Map pMap) { Position += TmpCollisionCheckedVector(CollisionBox, pDeltaX, pDeltaY, pMap.mBlocks); CheckMapCollision(pMap); }
//public void Jump(GameTime gameTime, Map map) //{ // if (Collision.CollisionCheckedVector(CollisionBox, 0, -1, map.mBlocks).Y < 0) // { // if (!jump) // { // spine.anim("jump", 0, false); // jump = true; // jumptimer = Game1.time.TotalMilliseconds; // } // float t = (float)((Game1.time.TotalMilliseconds - jumptimer) / 1000); // int deltay = (int)(-jumppower + (gravitation * t)); // if (deltay > 0) // { // jump = false; // fall = true; // falltimer = Game1.time.TotalMilliseconds; // } // else // { // Move(0, deltay, map); //v(t)=-g*t // } // } // else // { // jump = false; // } //} public void Move(Vector2 pDelta, Map pMap) { Move((int)pDelta.X, (int)pDelta.Y, pMap); }