嗨,我正在做一个桨球/乒乓球游戏,我正试图弄清楚如何像其他乒乓球游戏一样随机地使球从桨上“弹开”。

最简单的方法是什么?

目前,我的碰撞代码只是使其向另一个方向反弹(向上)

public void checkCollision()
{
    Rectangle paddlerect = new Rectangle((int)Paddle.pos.X, (int)Paddle.pos.Y, Paddle.paddle.Width, Paddle.paddle.Height);
    Rectangle ballrect = new Rectangle((int)pos.X, (int)pos.Y, ball.Width, ball.Height);

    if (ballrect.Intersects(paddlerect))
    {
        yspeed = 3;
    }
}


你能告诉我如何使它随机向两侧反弹吗?像在乙二醛上。

最佳答案

我将假设该球至少具有4个变量:


角度
大小
极速
速度


角度+幅度形成Vector,我将其称为v1。
要使其沿“随机”方向(实际上从不随机)反弹,您需要使用窦和余弦函数。我不会再解释材料在三角形中的工作原理,但是您可以使用它们来计算其中的每个长度和角度。所以你有了:

XSpeed = v1.Magnitude * cos(v1.Angle);
YSpeed = v1.Magnitude * sin(v1.Angle);


如果您需要了解更多信息,请转至Game Programming Wiki。说真的,这真的很棒。

关于c# - C#XNA桨球游戏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7695135/

10-08 21:46