本文整理汇总了C#中System.Random.NextVector2方法的典型用法代码示例。如果您正苦于以下问题:C# Random.NextVector2方法的具体用法?C# Random.NextVector2怎么用?C# Random.NextVector2使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Random
的用法示例。
在下文中一共展示了Random.NextVector2方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Canvas
void ICmpRenderer.Draw(IDrawDevice device)
{
// Create a buffer to cache and re-use vertices. Not required, but will boost performance.
if (this.buffer == null) this.buffer = new CanvasBuffer();
// Create a Canvas to auto-generate vertices from high-level drawing commands.
Canvas canvas = new Canvas(device, this.buffer);
canvas.State.TextFont = this.font;
// If the game is over or won, display "game over" screen
if (this.gameOver || this.gameWin)
{
// Various animation timing variables.
float animOffset = this.gameWin ? 0.0f : 2500.0f;
float animTime = this.gameWin ? 10000.0f : 4500.0f;
float blendDurationRatio = this.gameWin ? 0.6f : 0.5f;
float textOffsetRatio = this.gameWin ? 0.2f : 0.0f;
float timeSinceGameOver = (float)Time.MainTimer.TotalMilliseconds - this.lastTimeAnyAlive;
float gameOverAnimProgress = MathF.Clamp((timeSinceGameOver - animOffset) / animTime, 0.0f, 1.0f);
float controlInfoAnimProgress = MathF.Clamp(((timeSinceGameOver - animOffset) - animTime - 2000.0f) / 2000.0f, 0.0f, 1.0f);
float blendAnimProgress = MathF.Clamp(gameOverAnimProgress / blendDurationRatio, 0.0f, 1.0f);
float textAnimProgress = MathF.Clamp((gameOverAnimProgress - blendDurationRatio - textOffsetRatio) / (1.0f - blendDurationRatio - textOffsetRatio), 0.0f, 1.0f);
if (this.blendMaterial != null && blendAnimProgress > 0.0f)
{
canvas.PushState();
if (this.gameOver)
{
// Set up our special blending Material and specify the threshold to blend to
this.blendMaterial.SetUniform("threshold", 1.0f - blendAnimProgress);
canvas.State.SetMaterial(this.blendMaterial);
canvas.State.ColorTint = ColorRgba.Black;
// Specify a texture coordinate rect so it spans the entire screen repeating itself, instead of being stretched
if (this.blendMaterial.MainTexture != null)
{
Random rnd = new Random((int)this.lastTimeAnyAlive);
Vector2 randomTranslate = rnd.NextVector2(0.0f, 0.0f, canvas.State.TextureBaseSize.X, canvas.State.TextureBaseSize.Y);
canvas.State.TextureCoordinateRect = new Rect(
randomTranslate.X,
randomTranslate.Y,
device.TargetSize.X / canvas.State.TextureBaseSize.X,
device.TargetSize.Y / canvas.State.TextureBaseSize.Y);
}
}
else
{
// If we won, simply fade to white
canvas.State.SetMaterial(new BatchInfo(DrawTechnique.Add, ColorRgba.White));
canvas.State.ColorTint = ColorRgba.White.WithAlpha(blendAnimProgress);
}
// Fill the screen with a rect of our Material
canvas.FillRect(0, 0, device.TargetSize.X, device.TargetSize.Y);
canvas.PopState();
}
if (this.font != null && textAnimProgress > 0.0f)
{
canvas.PushState();
// Determine which text to draw to screen and where to draw it
string gameOverText = this.gameWin ? "is it over..?" : "darkness...";
Vector2 fullTextSize = canvas.MeasureText(gameOverText);
Vector2 textPos = device.TargetSize * 0.5f - fullTextSize * 0.5f;
gameOverText = gameOverText.Substring(0, MathF.RoundToInt(gameOverText.Length * textAnimProgress));
// Make sure not to draw inbetween pixels, so the text is perfectly sharp.
textPos.X = MathF.Round(textPos.X);
textPos.Y = MathF.Round(textPos.Y);
// Draw the text to screen
canvas.State.ColorTint = this.gameWin ? ColorRgba.Black : ColorRgba.White;
canvas.DrawText(gameOverText, textPos.X, textPos.Y);
canvas.PopState();
}
if (controlInfoAnimProgress > 0.0f)
{
Vector2 infoBasePos = device.TargetSize * 0.5f + new Vector2(0.0f, device.TargetSize.Y * 0.25f);
if (this.controlInfoMouseKeyboard != null)
{
canvas.PushState();
Vector2 texSize = this.controlInfoMouseKeyboard.Res.MainTexture.Res.Size * 0.5f;
canvas.State.SetMaterial(this.controlInfoMouseKeyboard);
canvas.State.ColorTint = ColorRgba.White.WithAlpha(controlInfoAnimProgress);
canvas.FillRect(
infoBasePos.X - texSize.X * 0.5f,
infoBasePos.Y - texSize.Y - 10,
texSize.X,
texSize.Y);
canvas.PopState();
}
//.........这里部分代码省略.........
示例2: Initialize
/// <summary>
/// Load stuff here
/// </summary>
protected override void Initialize()
{
var device = GraphicsDevice;
base.Initialize();
vb = new VertexBuffer(device, typeof(Vertex), 6 );
cb = new ConstantBuffer(GraphicsDevice, typeof(ConstData) );
instDataGpu = new StructuredBuffer( device, typeof(InstData), InstanceCount, StructuredBufferFlags.None );
instDataCpu = new InstData[ InstanceCount ];
var rand = new Random();
for (int i=0; i<InstanceCount; i++) {
instDataCpu[ i ].Offset = rand.NextVector2( new Vector2(-2.5f,-2f), new Vector2( 2.5f,2f) );
instDataCpu[ i ].Scale = rand.NextFloat( 0, 0.7f);
instDataCpu[ i ].Rotation = rand.NextFloat( 0, MathUtil.TwoPi );
instDataCpu[ i ].Color = rand.NextVector4( Vector4.Zero, Vector4.One * 0.7f );
instDataCpu[ i ].TexId = rand.Next(4);
}
Reloading += InstancingDemo_Reloading;
InstancingDemo_Reloading ( this, EventArgs.Empty );
}
示例3: Update
public static void Update()
{
isUpdating = true;
foreach (Entity entity in Entities)
entity.PreUpdate();
//bvhTree.Recalculate();
IEnumerable<CollisionData> Collisions = GetProbableCollisions();
foreach (CollisionData data in Collisions)
{
bool collision = data.Check();
if (collision)
{
Random rand = new Random();
data.CalculateN();
data.CalculateJ();
((PhysicsEntity)data.Object1).Collision(data);
data.Swap();
((PhysicsEntity)data.Object1).Collision(data);
float hue1 = 2;
float hue2 = (hue1 + rand.NextFloat(0, 2)) % 6f;
Color4 color1 = ColorUtil.HSVToColor(hue1, 0.5f, 1);
Color4 color2 = ColorUtil.HSVToColor(hue2, 0.5f, 1);
for (int i = 0; i < 150; i++)
{
float speed = 12.0f * (1.0f - 1 / rand.NextFloat(1, 3));
Color4 color = Color4.Lerp(color1, color2, rand.NextFloat(0, 1));
Vector2 dir = rand.NextVector2(1, 1);
ParticleManager.CreateParticle((data.Point1 + data.Point2) / 2, color, 190, Vector2.One, dir * speed, 0.2f);
}
}
}
foreach (Entity entity in Entities)
entity.Update();
foreach (Entity entity in Entities)
entity.PostUpdate();
isUpdating = false;
for (int i = Entities.Count - 1; i >= 0; i--)
{
Entity ent = Entities[i];
if (ent.isExpired)
{
Disposer.RemoveAndDispose(ref ent);
Entities.RemoveAt(i);
}
}
Entities.AddRange(addedEntities);
addedEntities.Clear();
}
示例4: Initialize
/// <summary>
/// Load stuff here
/// </summary>
protected override void Initialize ()
{
var device = GraphicsDevice;
base.Initialize();
vb = new VertexBuffer(device, typeof(Vertex), 6 );
vbi = new VertexBuffer(device, typeof(Instance), InstanceCount );
cb = new ConstantBuffer(GraphicsDevice, typeof(ConstData) );
instDataCpu = new Instance[ InstanceCount ];
var rand = new Random();
for (int i=0; i<InstanceCount; i++) {
var offset = rand.NextVector2( new Vector2(-2.5f,-2f), new Vector2( 2.5f,2f) );
var scale = rand.NextFloat( 0, 0.7f);
var rotation = rand.NextFloat( 0, MathUtil.TwoPi );
instDataCpu[ i ].InstanceTransform = new Vector4( offset, scale, rotation );
instDataCpu[ i ].InstanceColor = rand.NextVector4( Vector4.Zero, Vector4.One * 0.7f );
instDataCpu[ i ].InstanceTextureId = rand.Next(4);
}
// handle hot reload :
Reloading += InstancingDemo2_Reloading;
InstancingDemo2_Reloading( this, EventArgs.Empty );
}
示例5: Update
/// <summary>
/// Updates the state of the game. This method checks the GameScreen.IsActive
/// property, so the game will stop updating when the pause menu is active,
/// or if you tab away to a different application.
/// </summary>
public override void Update(GameTime gameTime, bool otherScreenHasFocus,
bool coveredByOtherScreen)
{
base.Update(gameTime, otherScreenHasFocus, false);
// Gradually fade in or out depending on whether we are covered by the pause screen.
if (coveredByOtherScreen)
pauseAlpha = Math.Min(pauseAlpha + 1f / 32, 1);
else
pauseAlpha = Math.Max(pauseAlpha - 1f / 32, 0);
if (IsActive)
{
mouse = Mouse.GetState();
// bloom
bloom.Visible = true;
bloom.Settings = BloomSettings.PresetSettings[bloomSettingsIndex];
// update entites
playerBody.update(gameTime);
Grid.Update();
ParticleManager.Update();
Grid.ApplyExplosiveForce(5f, playerBody.playerBody.Position * 64, 80);
foreach (playerLaser laser in playerBody.getLasers)
{
// Grid.ApplyExplosiveForce(5f, laser.laserBody.Position * 64, 50);
// Grid.ApplyImplosiveForce(5f, laser.laserBody.Position * 64, 50);
Grid.ApplyExplosiveForce(5f, laser.laserBody.Position * 64, 50);
}
if (playerBody.isAlive == false)
{
playerBody.isAlive = true;
}
foreach (SeekerDrone drone in Drones)
{
drone.setTarget(playerBody.playerBody.Position * 64);
drone.update(gameTime);
if (drone.getIsDead)
{
// if(!cam2D.getShake)
cam2D.Shake(300f, 1000f);
Grid.ApplyExplosiveForce(20f, drone.getBody.Position * 64, 1000);
Random randP = new Random();
float hue1 = randP.NextFloat(0, 6);
float hue2 = (hue1 + randP.NextFloat(0, 2)) % 6f;
Color color1 = ColorUtil.HSVToColor(hue1, 0.5f, 1);
Color color2 = ColorUtil.HSVToColor(hue2, 0.5f, 1);
for (int i = 0; i < 120; i++)
{
float speed = 18f * (1f - 1 / randP.NextFloat(1f, 10f));
var state = new ParticleState()
{
Velocity = randP.NextVector2(speed, speed),
Type = ParticleType.Enemy,
LengthMultiplier = 1f
};
Color color = Color.Lerp(color1, color2, randP.NextFloat(0, 1));
ParticleManager.CreateParticle(particleArt, drone.getBody.Position * 64f, color, 190, new Vector2(1.5f), state);
}
world.RemoveBody(drone.getBody);
playerBody.updateScore(2); /// update this to a getter and setter!!!
}
}
for (int k = 0; k < Drones.Count; ++k)
{
if (Drones[k].getIsDead)
{
Drones.RemoveAt(k);
}
}
//game script
foreach (Pickupable pickupable in Pickupables)
{
if (pickupable.getSetIsTouchingPlayer && playerBody.getSetWantsToPickUp && !playerBody.getSetHasPickedUp)
{
// joints.Add ( JointFactory.CreateRevoluteJoint(world,playerBody.playerBody,
// pickupable.getBody, new Vector2(0,0)));
Random randP = new Random();
float hue1 = randP.NextFloat(0, 6);
float hue2 = (hue1 + randP.NextFloat(0, 2)) % 6f;
Color color1 = ColorUtil.HSVToColor(hue1, 0.5f, 1);
//.........这里部分代码省略.........