コード例 #1
0
        public override void ImediateTranslate(Vector3 amount)
        {
            base.ImediateTranslate(amount);
            boundingBox.Max += amount;
            boundingBox.Min += amount;
            Vector3 upAmount = Vector3.Zero;

            foreach (CollidableGameObject cgo in CollidableObjects)
            {
                if (cgo is Field)
                {
                    while (cgo.Collided(this))
                    {
                        upAmount  = cgo.Position - boundingBox.Min;
                        upAmount *= Vector3.Up;
                        base.ImediateTranslate(upAmount);
                        boundingBox.Max += upAmount;
                        boundingBox.Min += upAmount;
                        VariableMovementComponent vmc = GetComponent <VariableMovementComponent>();
                        vmc.Acceleration          = Vector3.Zero;
                        vmc.CurrentVelocity       = Vector3.Zero;
                        vmc.AccelerationVariation = Vector3.Zero;
                        amount += upAmount;
                    }
                    break;
                }
            }
            if (Quad != null)
            {
                Quad.Translate(amount);
            }
        }
コード例 #2
0
ファイル: Ball.cs プロジェクト: mrthunder/UNICEF-Project
 public Ball(Renderer3D renderer, IEnumerable <CollidableGameObject> collidableObjects)
     : base(renderer, collidableObjects)
 {
     vmc = new VariableMovementComponent(this, 30, Vector3.Zero, Vector3.Zero);
     addComponent(vmc);
     frames = new Texture2D[1];
 }
コード例 #3
0
        private void UpdateJump(GameTime gameTime)
        {
            elapsedTime += gameTime.ElapsedGameTime.Milliseconds;
            if (elapsedTime >= (currentFrame == 5 ? 200 : 100))
            {
                if (jumpCount < 3)
                {
                    elapsedTime = 0;
                    if (touchingGround)
                    {
                        if (currentFrame < 6)
                        {
                            currentFrame++;
                        }

                        if (currentFrame == 6)
                        {
                            VariableMovementComponent vmc = GetComponent <VariableMovementComponent>();
                            vmc.CurrentVelocity = Vector3.Up / 5;
                            vmc.Acceleration    = Vector3.Down / 20;
                            touchingGround      = false;
                        }
                    }
                }
                else if (currentFrame > 3)
                {
                    currentFrame--;
                    elapsedTime = 0;
                }
                else
                {
                    finishedEnding = true;
                }
            }
        }
コード例 #4
0
        public Answer(Renderer3D renderer, IEnumerable <CollidableGameObject> collidableObjects, string text)
            : base(renderer, collidableObjects)
        {
            this.text = text;
            //"gravidade"
            VariableMovementComponent vmc =
                new VariableMovementComponent(this, 30,
                                              Vector3.Down / 1000 * (float)PublicRandom.NextDouble(0.01f),
                                              Vector3.Down / 100);

            vmc.LowerVelocityThreshold = Vector3.Down / 4;
            addComponent(vmc);
        }
コード例 #5
0
        public void KickBall(bool makeGoal, Vector3 target)
        {
            if (!kickBall)
            {
                kickBall      = true;
                this.makeGoal = makeGoal;

                ball.X = X;
                ball.Y = 0;
                ball.Z = boundingBox.Max.Z + 0.5f;
                VariableMovementComponent vmc = ball.GetComponent <VariableMovementComponent>();
                vmc.Acceleration = vmc.AccelerationVariation = vmc.CurrentVelocity = vmc.InitialVelocity = Vector3.Zero;
            }
        }
コード例 #6
0
        private Vector3 GetUpAmount(Vector3 amount)
        {
            Vector3 upAmount = Vector3.Zero;

            foreach (CollidableGameObject cgo in CollidableObjects)
            {
                if (cgo is Field)
                {
                    if (cgo.Collided(this))
                    {
                        upAmount       = cgo.Position - (boundingBox.Min + amount);
                        upAmount      *= Vector3.Up;
                        touchingGround = true;
                        VariableMovementComponent vmc = GetComponent <VariableMovementComponent>();
                        vmc.Acceleration    = Vector3.Zero;
                        vmc.CurrentVelocity = Vector3.Zero;
                        currentFrame--;
                        jumpCount++;
                    }
                    break;
                }
            }
            return(upAmount);
        }