XNA WP7加速计控制

XNA WP7加速计控制,xna,accelerometer,xna-4.0,Xna,Accelerometer,Xna 4.0,我正在将一个游戏移植到一个XNA4.0WP7项目中,但在控件方面遇到了一些问题。我使用加速计来控制运动,但有时飞船会完全跳到屏幕的另一个区域。我有下面的控制代码 Accelerometer _motion; Vector2 accelReading = new Vector2(); private float speed = 50.0f; //Initialize _motion = new Accelerometer(); _motion.R

我正在将一个游戏移植到一个XNA4.0WP7项目中,但在控件方面遇到了一些问题。我使用加速计来控制运动,但有时飞船会完全跳到屏幕的另一个区域。我有下面的控制代码

    Accelerometer _motion;
    Vector2 accelReading = new Vector2();
    private float speed = 50.0f;

    //Initialize
    _motion = new Accelerometer();

    _motion.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(AccelerometerReadingChanged);

    _motion.Start();

    //Method for Changed Readings
    public void AccelerometerReadingChanged(object sender, AccelerometerReadingEventArgs e)
    {
        accelReading.X = (float)e.X;
        accelReading.Y = (float)e.Y;

        vel.X = accelReading.Y * speed;
        vel.Y = accelReading.X * speed;
    }

    //Update
     float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;

     pos += vel * elapsed;

     vel *= 1 - elapsed;
accelerator\u运动;
Vector2 accelReading=新Vector2();
私人浮动速度=50.0f;
//初始化
_运动=新加速计();
_motion.ReadingChanged+=新事件处理程序(AccelerometerReadingChanged);
_运动。开始();
//改变读数的方法
公共无效AccelerometerRadingChanged(对象发送器,AccelerometerRadingEventargs e)
{
accelReading.X=(浮点)e.X;
accelReading.Y=(浮动)e.Y;
X级=加速度读数Y*速度;
Y级=加速度读数X*速度;
}
//更新
已用浮点=(浮点)gameTime.ElapsedGameTime.TotalSeconds;
pos+=水平*经过;
vel*=1-已用时间;

ReadingChanged
事件在WP 7.1中标记为不推荐,这是由于某些原因,可能是读取错误使用
CurrentValueChanged

如果这对使用
Motion
class尝试WP7没有帮助,那么它会更准确


谢谢您的回复!我改为使用CurrentValueChanged,但它仍然存在相同的问题。当我移动时,它将从屏幕顶部向下移动到底部。不确定是什么原因导致了这一点,也不确定精灵开关的方向。我想我知道可能出了什么问题,尝试降低速度,因为它是50,可能太快了