1

我目前正在从事射击游戏。因为我的拍摄次数是固定的。但我喜欢根据某人按下键盘键的时间来使其可变。如果按键时间更长,应该会产生更多的能量。

这是我的代码。

        {
            // 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;
        }
4

1 回答 1

1

为您的功率倍增器设置一个变量,这将导致您的速度在第一次按下时为 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() 即可)

if (lastKeyboardState.IsKeyDown(Keys.Space) && !currentKeyboardState.IsKeyDown(Keys.Space)
{
//Fire, but without full power
}
于 2013-07-31T17:37:20.930 回答