C#XNA运动不起作用,无法解释原因

时间:2012-04-07 22:40:27

标签: c# xna

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

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

我确信我错过了什么,无法想象什么,会显得愚蠢。

主档案:http://paste.ubuntu.com/919662/

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

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

非常感谢。

1 个答案:

答案 0 :(得分:3)

更新的答案:

真正的罪魁祸首是:

KeyboardState Keyboard = new KeyboardState();

您不能将'Keyboard'用作变量名称。这是来自XNA的课程!你正在重新宣布它。因此,您的按键不再被检测到!请改用:

KeyboardState keyb = Keyboard.GetState();

并更新您的参考资料

这个答案有点有效:

您正在初始化角色

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

但是在你的Update()方法中你可以:

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

您正在修改Character类中Pos的值,但这与myTexture没有任何关联。事实上,你根本不在屏幕上画“角色”。

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

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

还有一件事:

在LoadContent中你正在做

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

但文件明确指出:  /// LoadContent将在每场比赛中被称为一次,并且是加载的地方         ///你的所有内容。

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