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); } }
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]; }
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; } } }
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); }
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; } }
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); }