У меня есть объект, который, если он попадает в определенное состояние, я создаю новый объект:XNA объекта не меняется
if (currentShape.State == ShapeState.Landed)
{
Shape shape = new Shape();
shape = utilities.GetRandomShape(contentManager);
shapes.Add(shape);
currentShape = shape;
}
currentShape
Объект постоянно меняется таким образом. По какой-то причине, однако, currentShape по-прежнему ShapeState.Landed навсегда.
Игра, в которой у меня есть предметы, падающие, когда человек достигает земли, создается другая и назначается currentShape
. Поэтому, когда currentShape
земли, другой создается ... как уже упоминалось.
Логика метода обновления заключается в следующем:
public void Update(TimeSpan elapsedTime, List<Shape> shapes, Shape fallingShape)
{
List<Shape> shapesInSameColumn = new List<Shape>();
foreach (var shape in shapes)
{
if (shape.ColumnNumber == fallingShape.ColumnNumber)
{
shapesInSameColumn.Add(shape);
}
}
shapesInSameColumn.Remove(fallingShape);
float yDestination = 0f;
float yNextPosition = fallingShape.Position.Y + elapsedTime.Milliseconds/30 * FallSpeed;
if (shapesInSameColumn.Count == 0) // There are NO shapes in the column
{
yDestination = Utilities.bottomOfCanvas;
if (yNextPosition > yDestination)
{
fallingShape.Position.Y = yDestination;
fallingShape.State = ShapeState.Landed;
return;
}
else
{
fallingShape.Position.Y = yNextPosition;
}
}
else // There ARE shapes in the column
{
yDestination = shapesInSameColumn[shapesInSameColumn.Count - 1].Position.Y - Texture.Height;
if (yNextPosition > yDestination)
{
fallingShape.Position.Y = yDestination;
fallingShape.State = ShapeState.Landed;
return;
}
else
{
fallingShape.Position.Y = yNextPosition;
}
}
}
UPDATE После нескольких кадров, он идет, чтобы бесконечный цикл добавления фигур в коллекции, как государство всегда Приземлился.
Я предполагаю, что после первого кода, который вы предоставили, он запускает метод «Обновить», где 'fallShape.State' установлен на« Landed ». – ShadowCat7
...... Не могли бы вы рассказать, что вы имеете в виду/что вы думаете о проблеме? – Subby
Показать код объекта, который запускает первый код, который вы указали. Вероятно, он выполняет этот код, а затем запускает метод «Update». – ShadowCat7