C# xna按此键多长时间充电

C# xna按此键多长时间充电,c#,xna,xna-4.0,C#,Xna,Xna 4.0,我目前正在从事射击游戏。因为我知道射击的次数是固定的。但我喜欢根据某人按下键盘键的时间来改变它。如果长时间按下该键,则应产生更多功率 这是我的密码 { // Create projectile worldEntities.Add(new Sphere(GraphicsDevice, 0.1f, 0.2f, Character.EyePosition() + Character.LookTowards(), 0.8f, Color.B

我目前正在从事射击游戏。因为我知道射击的次数是固定的。但我喜欢根据某人按下键盘键的时间来改变它。如果长时间按下该键,则应产生更多功率

这是我的密码

        {
            // Create projectile
            worldEntities.Add(new Sphere(GraphicsDevice, 0.1f, 0.2f, Character.EyePosition() + Character.LookTowards(), 0.8f, Color.Blue));
            // Add gravity to projectile
            (worldEntities[worldEntities.Count - 1] as RigidBody).Acceleration = new Vector3(0f, -10f, 0f);

            // Calculate launch velocity
            Vector3 launchVelocity = Character.LookTowards() * 10f;


            // Set particle velocity to launch velocity
            (worldEntities[worldEntities.Count - 1] as RigidBody).Velocity = launchVelocity;

            // Reset timer
            timer = 1f;
        }

为功率倍增器设置一个变量,这将使您的速度在第一次按下时为0%,在按住最大时间时为100%

float power;
const float maxTime = 1000; //1 second
在更新方法中,您需要检查按键是否已按下,并添加自上一帧以来经过的时间

if (KeyBoard.GetState().IsKeyDown(Keys.Space))
    power += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
我们还需要检查功率是否达到最大功率,然后发射它

if (power >= maxTime)
    //Fire!
另外,还有一种情况,即用户在点火前松开钥匙。(lastKeyboardState是最后一帧状态,只需在每帧末尾将其设置为KeyBoard.GetState())


为功率倍增器设置一个变量,这将使您的速度在第一次按下时为0%,在按住最大时间时为100%

float power;
const float maxTime = 1000; //1 second
在更新方法中,您需要检查按键是否已按下,并添加自上一帧以来经过的时间

if (KeyBoard.GetState().IsKeyDown(Keys.Space))
    power += (float)gameTime.ElapsedGameTime.TotalMilliseconds;
我们还需要检查功率是否达到最大功率,然后发射它

if (power >= maxTime)
    //Fire!
另外,还有一种情况,即用户在点火前松开钥匙。(lastKeyboardState是最后一帧状态,只需在每帧末尾将其设置为KeyBoard.GetState())


问题出在哪里?保存按键时的时间,释放时计算与当前时间的差值。把速度乘以这个差和一个常数,问题出在哪里?保存按键时的时间,释放时计算与当前时间的差值。将速度乘以这个差和一个常数。