当前位置: 首页 > 知识库问答 >
问题:

分接桨碰撞角

慕容铭
2023-03-14

我正在做一个突破克隆,在球与桨的碰撞中遇到了一些小麻烦。我用一个矩形表示球和桨,当它们相交时,表示球速度的Y向量为负数(如下所示)。这一切都很好。问题是当球拍向右移动时,我希望它将球稍微向右移动(与正常反射相反),我希望在相反方向发生相同的情况,即球拍向左移动。我不知道该怎么做,我已经找遍了。任何帮助都将不胜感激。谢谢

if (paddleRectangle.Intersects(ballRectangle))
{
    ballVelocity.Y *= -1;
    collision.Play(); //a collision sound
}

编辑:基本上我想根据球拍移动的方向稍微改变球从球拍上反弹的角度。如果桨叶不移动,则球将正常反弹(通过反转球速度的Y分量)

共有3个答案

卞嘉许
2023-03-14

你想要一点摩擦,但可能不是真正的摩擦。

尝试将桨速度降低一些因素,并将其添加到球速度中。

公羊俊德
2023-03-14

我在脑袋里磨了磨。。。以下是结果。要实现这一点,你需要,球拍的移动方向,球拍的速度,球的速度,球的方向。然后通过一些数学函数计算弹跳的角度和速度。

我认为这张图片(如果反弹在物理上是正确的)会让你知道如何创建它。无法帮助您处理这个问题,但我会像图中那样尝试。

燕元明
2023-03-14

将桨叶的速度矢量添加到桨叶的法线矢量(这基本上会在桨叶移动的方向上弯曲法线),并将结果归一化。将其用作反射的碰撞法线。

Vector2 collisionNormal = Vector2.Normalize(paddleNormal + (paddleVelocity * desiredEffectAmount));
ballVelocity = Vector2.Reflect(ballVelocity, collisionNormal);
 类似资料:
  • 我正在创建一个突破游戏来熟悉Java。目前我已经把一切都做好了,但我注意到球似乎是朝着同一个方向飞的。 我已经对它进行了编程,当球碰到球拍时,Y速度是相反的。这是可行的,但球似乎遵循相同的路线。。。 如何让碰撞看起来更真实? 当球击中桨的左侧时,我想将其重新定向到左侧,但我不确定在哪个角度反射它。有人能提供一个公式来帮助我计算出当球接触桨的左侧或右侧时需要引导的角度吗?

  • 基本上我在做一个游戏的过程中,这是像乒乓球,突破等,我有一些问题时,球和桨碰撞。。。但只是有时候! 下面的视频是正在发生的事情:http://www.youtube.com/watch?v=uFZIxFIg0rI 所以是的,基本上,当球与球拍相撞时,它有时会变得有点疯狂......通常情况下,如果我将球拍移动到球接近它的相反方向。此外,球有时会被夹在游戏窗口的底部和球拍之间......即使我有代码

  • 分组管理 分组管理,需要打开 项目设置 面板进行设置,位置为 菜单栏 -> 项目 -> 项目设置。 打开 项目设置 面板后,在 分组管理 一栏可以看到 分组列表 的配置项,如下图 点击 添加分组 按钮后即可添加一个新的分组,默认会有一个 Default 分组。 需要注意的是:分组添加后是不可以删除的,不过你可以任意修改分组的名字 碰撞分组配对 在 分组列表 下面可以进行 碰撞分组配对 表的管理,如

  • 你是否看到过车祸?是否跟什么物体相撞过?就像车的相撞一样,刚体对象也可以互相碰撞,当它们互相接触的时候,就认为发生了碰撞。当碰撞发生时,会触发一系列事件,它可以被完全忽略。 碰撞筛选 碰撞筛选允许你启用或者阻止形状之间碰撞的发生,引擎支持使用类型,组位掩码来进行碰撞筛选。 Cocos2d-x 有 32 个支持的碰撞类型,对于每个形状都可以指定其所属的类型。还可以指定有哪些类型可以与这个形状进行碰撞

  • 我想创造一个和乒乓球一样的游戏。我创建了一个沿着圆周移动的桨。注意桨是弧形的。我想知道我如何检测球和桨之间的碰撞。为了更好地理解这个:http://gyazo.com/7bac8acdf0faf66005015d496498ca33球将在圆圈内,当与桨碰撞时反射出去。提前感谢!

  • 我正在尝试做一个平台游戏,其中没有斜坡。我正在尝试将碰撞检测降下来,但是我在pygame中找不到一种方法来获得哪一边与另一个Sprite发生了碰撞。有没有人能给我一个好的方法来做到这一点,那不是太庞大,但也能很好地工作在我的情况? 下面是我的玩家类: 我已经将它添加到我的player类中,每次播放器更新时我都运行它,并且它工作...差一点。 在平台顶部的碰撞起作用,在侧面的碰撞几乎总是起作用,除非