Esempio n. 1
0
        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;
                    }
                }
            }
        }
Esempio n. 2
0
        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;
            }
        }