xna - 突破桨碰撞角度

标签 xna xna-4.0 breakout

我正在制作一个突破克隆,但在球与 Racket 碰撞方面遇到了一些麻烦。我有一个矩形代表球和桨,当它们相交时,代表球速度的 Y 向量被取负(如下所示)。一切都很好。问题是,当 Racket 向右移动时,我希望它将球稍微向右推(而不是正常地反射),并且我希望在 Racket 移动到的相反方向上发生同样的情况左边。我不知道如何去做这件事,我已经到处看了。任何帮助,将不胜感激。谢谢。

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

编辑:基本上我想根据 Racket 移动的方向稍微改变球从 Racket 弹起的角度。如果 Racket 没有移动,那么球将正常弹跳(通过反转球速度的 Y 分量)

最佳答案

将桨的速度矢量添加到桨的法线矢量(这基本上使法线沿桨移动的方向弯曲)并对结果进行归一化。使用它作为反射的碰撞法线。

Vector2 collisionNormal = Vector2.Normalize(paddleNormal + (paddleVelocity * desiredEffectAmount));
ballVelocity = Vector2.Reflect(ballVelocity, collisionNormal);

关于xna - 突破桨碰撞角度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19145678/

相关文章:

c# - Xna调试

c# - 是否可以在自定义 XNA 内容处理器中定义 Assets 名称?

java - 在 Java 方法中更改我的背景

c# - 读取系统音频输出流

c# - 从通用列表中测试 BoundingBox

c# - 使用 XNA 游戏以试用模式进入 Marketplace

audio - 可以知道XNA SoundEffects中当前是否正在播放声音实例吗?

.net - 无法为 XNA 4.0 游戏选择目标框架

Java:突破游戏,滑动时移动玩家?