嘿,伙计,我正在制作一个板球/乒乓球游戏,我正在尝试弄清楚如何让球像其他乒乓球游戏一样从 Racket 上随机“反弹”。
最简单的方法是什么?
目前我的碰撞代码只是让它在另一个方向(向上)反弹
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 个变量:
- 角度
- 规模
- 极速
- Y速度
角度+幅度形成一个Vector ,我称之为 v1。 要使其在“随机”方向(实际上从来都不是随机的)反弹,您需要使用 sinus 和 cosinus 函数。我不会回过头来解释三角形中的东西是如何工作的,但是您可以使用它们来计算其中的每个长度和角度。所以你有:
XSpeed = v1.Magnitude * cos(v1.Angle);
YSpeed = v1.Magnitude * sin(v1.Angle);
如果您需要了解更多信息,请前往 Game Programming Wiki .说真的,这真的很棒。
关于C# XNA 桨球游戏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7695135/