C# XNA 桨球游戏

标签 c# xna

嘿,伙计,我正在制作一个板球/乒乓球游戏,我正在尝试弄清楚如何让球像其他乒乓球游戏一样从 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/

相关文章:

c# - WCF Web JSON 请求双斜线

c# - 强制重写另一个方法的方法被重写

fonts - 在 XNA 中绘制一个字符串到纹理?

c# - 尽可能整齐地处理碰撞过程中的速度矢量

c# - 使用控制台更改对象变量

c# - BackgroundWorker 奇怪的问题

C# 匿名类型声明

c# - 将 XNA 项目转换为 Silverlight

c# - Service broker 与正常监视器性能

c# - XNA,在运行时减去 2 个网格?