我正在尝试创建一个简单的应用程序,非常简单。
我不知道为什么,但是当我单击左箭头或右箭头时,纹理不会改变它的位置。
我确定我错过了一些东西,不知道是什么,看起来很愚蠢。
主文件: http: //paste.ubuntu.com/919662/
Character.cs: http: //paste.ubuntu.com/919664/
Position.cs: http: //paste.ubuntu.com/919665/
非常感谢。
我正在尝试创建一个简单的应用程序,非常简单。
我不知道为什么,但是当我单击左箭头或右箭头时,纹理不会改变它的位置。
我确定我错过了一些东西,不知道是什么,看起来很愚蠢。
主文件: http: //paste.ubuntu.com/919662/
Character.cs: http: //paste.ubuntu.com/919664/
Position.cs: http: //paste.ubuntu.com/919665/
非常感谢。
更新答案:
真正的罪魁祸首是:
键盘状态键盘 = 新键盘状态();
您不能使用“键盘”作为变量名。这是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 ,它是加载 /// 所有内容的地方。
这应该让你开始如何修复它。如果您仍有疑问,请在我的回答下发表评论。