1

我正在尝试创建一个简单的应用程序,非常简单。

我不知道为什么,但是当我单击左箭头或右箭头时,纹理不会改变它的位置。

我确定我错过了一些东西,不知道是什么,看起来很愚蠢。

主文件: http: //paste.ubuntu.com/919662/

Character.cs: http: //paste.ubuntu.com/919664/

Position.cs: http: //paste.ubuntu.com/919665/

非常感谢。

4

1 回答 1

3

更新答案:

真正的罪魁祸首是:

键盘状态键盘 = 新键盘状态();

您不能使用“键盘”作为变量名。这是XNA的一堂课!你正在重新声明它。因此,您的按键不再被检测到!改用这个:

KeyboardState keyb = Keyboard.GetState();

并更新您的参考资料

这个答案有点有效:

您正在初始化 Character

        C = new Character(100, 100, new Position(200, 200));

但是然后在您的 Update() 方法中,您可以:

        spriteBatch.Draw(myTexture, myVector, Color.White);

您正在正确修改 Character 类中 Pos 的值,但这与 myTexture 无关。事实上,您甚至根本没有在屏幕上绘制“字符”。

TL;DR:您正在修改“Character”类,但您正在绘制 myTexture。您正在修改包含 myTexture 的对象的坐标,而不是 Character。

此外,如果您想在屏幕上绘制“字符”,最好的方法是使用 Vector2D 而不是您自己的 Pos 类。

还有一件事:

在 LoadContent 你正在做

        myVector = new Vector2(C.Pos.Col, C.Pos.Row);

但是文档清楚地指出: /// 每个游戏都会调用一次LoadContent ,它是加载 /// 所有内容的地方。

这应该让你开始如何修复它。如果您仍有疑问,请在我的回答下发表评论。

于 2012-04-07T23:04:19.363 回答