我正在尝试制作我的第一个XNA游戏,但我无法弄清楚如何实现以下功能: 我有一个不同类型的对象列表,它们被加载和绘制。通过单击其中一个对象,我需要创建一个相同类型的新对象,并将此新对象添加到另一个列表中。 我已经尝试了下面的代码,我可以添加尽可能多的对象,但我只需要点击第0个对象。(所有这些对象都有一个类型)。当我点击其他对象时没有任何反应。如何使它工作?
for (int i = 0; i < initialPlanets.Count; i++)
{
MouseState mouse = Mouse.GetState();
if (initialPlanets[i].CollisionRectangle.Contains(
mouse.X, mouse.Y) &&
mouse.LeftButton == ButtonState.Released &&
previousButtonState == ButtonState.Pressed)
{
userPlanetSequence.Add(new Planet(
initialPlanets[i].Type,
GetPlanetSprite(initialPlanets[i].Type),
new Vector2(100 * (i + 1), 100)));
}
previousButtonState = mouse.LeftButton;
}
答案 0 :(得分:0)
我假设你在点击事件中调用它。
每次循环时都在轮询鼠标状态。第一次浏览时(在零对象上)设置previousButtonState = mouse.LeftButton
以便后续循环&#39; if语句总是错误的。
我无法在不知道您最初如何设置previousButtonState
的情况下给出一个完整的示例,但是朝着正确方向迈出的一步将是MouseState mouse = Mouse.GetState()
置于循环之外,因此您只能获得一次