void CalcVelocity(GameTime gameTime) { collisionPlatform = -1; newPosition = bPosition; newPosition.X += (int)(bVelocity.X * (float)gameTime.ElapsedGameTime.TotalMilliseconds / 16); newPosition.Y += (int)(bVelocity.Y * (float)gameTime.ElapsedGameTime.TotalMilliseconds / 16); collisionPlatform = Level.curLevel.PlatformCollision(newPosition); if (collisionPlatform == -1) { collisionDir = Level.CollisionDir.None; } else { collisionDir = Level.curLevel.PlatformDirection(collisionPlatform, bPosition); if (collisionDir != Level.CollisionDir.None) { bVelocity = Level.curLevel.NewVelocity(collisionPlatform, collisionDir, bPosition, bVelocity); if (collisionDir == Level.CollisionDir.Bottom || collisionDir == Level.CollisionDir.Top) { bPosition.Y += (int)bVelocity.Y; if (!bMoving) { bVelocity.Y = 0; bVelocity.X = 0; bOnGround = true; sfShellFall.Play(); } else { bShootDirection.Y = -bShootDirection.Y; } } else { bPosition.X += (int)bVelocity.X; bShootDirection.X = -bShootDirection.X; } } } }
void CalcVelocity(GameTime gameTime) { collisionPlatform = -1; newPosition = pCollisionPosition; newPosition.X += (int)(pVelocity.X * (float)gameTime.ElapsedGameTime.TotalMilliseconds / 16); newPosition.Y += (int)(pVelocity.Y * (float)gameTime.ElapsedGameTime.TotalMilliseconds / 16); collisionPlatform = Level.curLevel.PlatformCollision(newPosition); if (collisionPlatform == -1) { collisionDir = Level.CollisionDir.None; } else { collisionDir = Level.curLevel.PlatformDirection(collisionPlatform, pCollisionPosition); if (collisionDir != Level.CollisionDir.None) { pVelocity = Level.curLevel.NewVelocity(collisionPlatform, collisionDir, pCollisionPosition, pVelocity); if (collisionDir == Level.CollisionDir.Bottom || collisionDir == Level.CollisionDir.Top) { pPosition.Y += (int)pVelocity.Y; pCollisionPosition.Y += (int)pVelocity.Y; pVelocity.Y = 0; } else { pPosition.X += (int)pVelocity.X; pCollisionPosition.X += (int)pVelocity.X; pVelocity.X = 0; } } } // ------------------------------------------ Falling parameters if (collisionDir == Level.CollisionDir.Bottom) { onGround = true; } }