Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么';在XNA游戏w/C#中实现碰撞检测的最简单方法是什么?_C#_Xna - Fatal编程技术网

什么';在XNA游戏w/C#中实现碰撞检测的最简单方法是什么?

什么';在XNA游戏w/C#中实现碰撞检测的最简单方法是什么?,c#,xna,C#,Xna,我基本上是在做一个Pong克隆,我想添加碰撞。我想让它工作的方式是,每个桨将被分为4个部分(不是视觉上的),球的反应将根据它击中的部分而有所不同 至于碰撞,我只知道矩形碰撞,这基本上是整个桨的整体。我不知道如何使桨叶具有4个可能的碰撞点,并具有不同的反应。只要将桨叶分成4块,并保持为一块:) Collide如果矩形不碰撞,或者碰撞的第一个索引,则方法返回-1 CollideIndex方法返回碰撞矩形的IEnumerable索引 针对球、墙、砖调用您最喜欢的算法 别忘了给我寄一份你的游戏副本 只要

我基本上是在做一个Pong克隆,我想添加碰撞。我想让它工作的方式是,每个桨将被分为4个部分(不是视觉上的),球的反应将根据它击中的部分而有所不同


至于碰撞,我只知道矩形碰撞,这基本上是整个桨的整体。我不知道如何使桨叶具有4个可能的碰撞点,并具有不同的反应。

只要将桨叶分成4块,并保持为一块:)

Collide如果矩形不碰撞,或者碰撞的第一个索引,则方法返回-1

CollideIndex方法返回碰撞矩形的IEnumerable索引

针对球、墙、砖调用您最喜欢的算法


别忘了给我寄一份你的游戏副本

只要把桨叶分成4块,并保持为一块:)

Collide如果矩形不碰撞,或者碰撞的第一个索引,则方法返回-1

CollideIndex方法返回碰撞矩形的IEnumerable索引

针对球、墙、砖调用您最喜欢的算法


别忘了给我寄一份你的游戏副本

我会将桨分成不同宽度的矩形,例如:

ABBCCCDDDDDDDDDDDDCCCBBA

其中每个字母表示一个连续的矩形(DDD是一个宽矩形)。因为你知道如何与矩形相交,你可以,比方说,设置为D矩形,反应将是完美反射(180α),其中A,B,C将是(180-α*因子),其中因子取决于矩形,例如,A为2,B为1.8,C为1.5。从技术上讲,D的系数是1:)

我会把桨分成不同宽度的矩形,例如:

ABBCCCDDDDDDDDDDDDCCCBBA

其中每个字母表示一个连续的矩形(DDD是一个宽矩形)。因为你知道如何与矩形相交,你可以,比方说,设置为D矩形,反应将是完美反射(180α),其中A,B,C将是(180-α*因子),其中因子取决于矩形,例如,A为2,B为1.8,C为1.5。好的,从技术上讲,D的系数是1:)

为了给答案增加另一个维度,这是一个经典的构建vs购买决策:-)如果你想构建,一定要自己动手。但是,如果您只想专注于游戏,那么您可以利用大量的库来实现此功能:

  • Farseer Physics(),专注于2D,非常适合您上面描述的内容
  • 物理2D()
  • JigLibX()
有一个非常好的其他引擎列表,它可能比我在XNA Wiki上的SO答案中提供的更全面:

为了给答案增加另一个维度,这是一个经典的“构建vs购买”决策:-)如果你想构建,一定要自己动手。但是,如果您只想专注于游戏,那么您可以利用大量的库来实现此功能:

  • Farseer Physics(),专注于2D,非常适合您上面描述的内容
  • 物理2D()
  • JigLibX()
有一个非常好的其他引擎列表,它可能比我在XNA Wiki上的SO答案中提供的更全面: