Tag: xna

XNA – 保持更长时间跳得更高

我正在为我的游戏寻找一种简单的方法,这样当你按住空格键时,你会跳得更高。 当你“点击”时,你不会跳到最大高度。 需要有一个最大值,但是,我不知道如何编程这个。 Anyhelp,非常感谢。 将给出反馈。 谢谢。

Xna绘制订单无法正常工作

我有一个2d的Texture2D数组,它在这个数组中保存了地图的不同部分。 我有一个问题,当我运行游戏时,地图绘制正确但由于某种原因,数组[0,0]纹理重叠我的所有纹理,包括我的播放器纹理和鼠标纹理。 每个其他纹理都有效,因为我的鼠标和播放器纹理正确地重叠了地图。 我现在真的很困惑,因为地图纹理是使用嵌套的for循环绘制在一起的。 这是我的地图绘制方法,我在Game的Draw方法中调用: public void Draw() { // Draws the Map from a 2D Array for (int row = 0; row < mapTexture.GetLength(0); row++) { for (int col = 0; col < mapTexture.GetLength(1); col++) { spriteBatch.Draw(mapTexture[row, col], mapPosition[row, col], Color.White); }//end for }//end for }//end Draw() 我的实际绘制方法: protected override void Draw(GameTime gameTime) { […]

在应用程序启动时调用XNA GraphicsDeviceManager.ApplyChanges()会导致闪烁

我有一个函数,其中包含以下代码: GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferWidth = width; GameStateManagementGame.GraphicsDeviceManager.PreferredBackBufferHeight = height; GameStateManagementGame.GraphicsDeviceManager.IsFullScreen = isFullScreen; GameStateManagementGame.GraphicsDeviceManager.ApplyChanges(); 在应用程序启动时调用它时,如果isFullScreen = true,即使宽度和高度与桌面分辨率相同,也会有一秒钟或2的非常明显的屏幕闪烁。 如果我没有ApplyChanges(); 调用此操作不会发生(但设置确实应用)。 如果我在没有ApplyChanges()调用的情况下完全启动游戏后调用该函数,则不会应用这些设置。 现在我可以通过在启动时跳过ApplyChanges()调用来解决这个问题,但我想知道为什么会发生这种情况。 我设法找到的关于此问题的唯一信息表明,如果您使用与桌面相同的分辨率或提供过于复杂和破坏的变通方法,则不应发生闪烁。 所以我的问题是上述行为的原因是什么,最好的解决方法是什么?

似乎无法从Windows Phone 7中的TouchPanel获得触摸输入

我在Visual Studio中开始了一个新项目,并且一直在尝试使用静态TouchPanel类来获取输入。 我通过EnabledGestures属性启用了“Tap”手势,但是当我点击屏幕时手势没有注册(即TouchPanel.IsGestureAvailable返回false)。 其他东西,如Mouse.GetState()。LeftButton == ButtonState.Pressed永远不会certificate是真的,即使在我以前的项目(基于Microsoft示例项目)中它始终没有任何问题。 任何人都有任何想法,为什么我似乎无法从设备获得任何forms的输入?

旋转附加到其他对象的对象

我有一个关于单个网格(建筑物)的问题,其中包含一组动画对象(这些对象构成了整个建筑物,在构造时从地面上升,以不同的速度和旋转)。 网格中的动画对象都有自己的位置和旋转动画轨迹。 我将它从3DS Max导出为ASE,将其转换为适当的格式并在我的游戏引擎中使用它。 所以,目前,我可以成功地显示网格中所有动画对象的动画位置。 执行以下操作: 比例,旋转和平移变量是建筑物的转换信息。 这对所有子对象都有效。 pos变量表示相对于建筑物中心的子对象位置。 foreach (GeometricObject geoObject in mesh.GeoObjects) { Vector3 pos = geoObject.AnimationData.PositionTrack[(int)m_keyFrameTime]; Vector3 translatedPos = new Vector3(translation.X + pos.X, translation.Y + pos.Y, translation.Z + pos.Z) _eRenderer.ActiveCamera.World = Matrix.CreateScale(scale) * Matrix.CreateFromQuaternion(rotation) * Matrix.CreateTranslation(translatedPos); } 这将完美地显示动画建筑(从地面升起),并且所有子对象都处于正确的位置。 现在,当我尝试旋转子对象时,问题出现了。 我尝试了很多不同的方法,但在旋转子对象后,子对象的转换似乎总是搞砸了。 这就是我现在所拥有的,但它仍然搞砸了: foreach (GeometricObject geoObject in mesh.GeoObjects) { Vector3 pos = geoObject.AnimationData.PositionTrack[(int)m_keyFrameTime]; Vector3 […]

从一个实例重复声音

我一直在阅读有关将声音编程到ac#XNA游戏中的不同方法。 我决定使用声音实例进行音量控制,但是在播放.wav时,我意识到声音只会在完成后再次播放,而只是使用声音效果.Play()(而不是如果被要求,将导致它自己播放多个副本。 所以我的问题是,在按住按钮会导致单个声音效果一次多次播放的情况下(例如机枪的重复无人机等),而不是等到声音文件结束循环; 你会如何使用实例? 我假设有一些我缺少的东西,或者一个实例不是为此用途而设计的。 如果是这样,声音效果的基本选项和声音效果实例的基本选项之间的主要区别是什么? 提前致谢。

无法在XNA中隐式转换类型

我有一个弹跳球,我试图这样做,当它反弹一次,速度变得更高。 在我的球课上,我有一个float speed; 我初始化它: public ball(float speed) speed = 1f; 我有一个球运动的方法,看起来像这样: public void BallMovement() { if (movingUp) { ballRect.Y -= speed; }//Error if (!movingUp) { ballRect.Y += speed; }//Error if (movingLeft) { ballRect.X -= speed; }//Error if (!movingLeft) { ballRect.X += speed; }//Error if (ballPosition.Y = 480) { movingUp = true; } 然后我在update方法中添加它: BallMovement(); 它在我尝试使用速度变量之前工作,因为这个错误它不会编译: […]

String.Insert不起作用

我(希望)有一个简单的问题。 String.Insert(0, “test”); 不起作用,但是: String.Text += “test”; 呢..? 我需要插入,所以我可以在字符串的中间插入一些东西。

如何确定矩形的哪一边与圆碰撞

在你指出这个问题还有其他答案之前,我已经查看了这个问题或类似问题的大多数其他答案,但我还没有找到我需要的解决方案。 基本上我想要做的就是当圆/球与矩形碰撞时,我想确定这个碰撞发生在矩形的哪一侧。 我想找到这个,以便我可以强制执行更逼真的物理,例如,如果球击中矩形的顶部,只反过来它的Y速度……而不是两者。 我已经尝试比较球和矩形的X和Y位置,甚至是它们两个边界框的位置……测试即使球的底部与矩形顶部相交……使用’if ball .boundingBox.Bottom> = rectangle.boundingBox.Top’。 我已经附上了一张照片,以显示我想要实现的目标…以防它有点混乱,因为它不详细……如果球从一侧进来,那么看起来像v的红色是路径,我希望撞击时的运动以相反的方式行进,但这取决于矩形的一侧,关于球的速度的哪个部分我将不得不改变…… 仅供参考我也看过矢量标准化…我之前没有使用过它原谅我如果可以用这个来解决… 感谢v.much阅读 编辑,因为我匆忙,我使用了不同的图像……这仍然显示了我想要实现的行为,因为图上显示的物理是我希望球在与另一个碰撞时表现的行为双方……链接到图片: http : //codeincomplete.com/posts/2011/6/12/collision_detection_in_breakout/bounce2.v283.png

如何在XNA中使用DirectX.DirectInput

joystick.cs using System; using Microsoft.DirectX.DirectInput; namespace gameproject { /// /// Description of device. /// class joysticks { public static Device joystick; public static JoystickState state; public static void InitDevices() //Function of initialize device { //create joystick device. foreach (DeviceInstance di in Manager.GetDevices( DeviceClass.GameControl, EnumDevicesFlags.AttachedOnly)) { joystick = new Device(di.InstanceGuid); break; } if (joystick == null) […]