2

我需要根据他(一个矩形)站立或行走的平台范围来旋转角色精灵。我根据他所站立的平台的坡度来旋转它就达到了效果。但是有两个问题:

首先,旋转不顺畅。当角色从一个平坦的平台走到一个倾斜的平台上时,它会立即旋转,并且由于这种旋转,它会被向上推一点。

其次,一旦他走下斜坡并再次走上平坦的平台,我就无法相应地旋转角色。这是因为此时角色会同时与一个平坦的平台和一个倾斜的平台(它们被放置在一起)发生碰撞,因此在几步之后,角色将疯狂地来回旋转,因为两个碰撞检测功能一起工作。

我试图通过检测角色的面来解决这个问题,并试图找出他的哪个点(左或右)首先接触到某物,但它不起作用,因为我只能检测到碰撞,而不是“无碰撞”或“当角色离开某个平台时”。

我已附上有关情况的说明。请帮忙,谢谢!

PS:由于我不允许发布图片,请访问:http: //i.stack.imgur.com/jqPjt.png获取图片。谢谢。

4

2 回答 2

2

你的轮换似乎关闭了。您需要围绕字符矩形的底部旋转。这将解决您的一些问题,但不是全部。

角色接触2个平台的情况需要处理。目前我猜你只是直接从平台中提取一个角度并将其分配给角色。这不会削减它,因为当您有不同的接触点时,您需要任意角度。

解决方案是在 2 个接触点之间创建一个向量,然后获取向量的分量x,y并调用atan2(x, y). 这将以弧度给出触点之间的角度。确保以正确的方式获取参数!游戏开发需要您了解三角学和矢量数学。这里发生的是我们正在创建一个轴对齐的直角三角形,其斜边由两个接触点定义,然后我们翻转三角形并tan = opp/adj通过交换 x 和 y 分量来获得角度。

请注意,您需要确保始终以特定顺序给出接触点,否则您最终会以奇怪的角度旋转,因为您创建的三角形将面向另一个方向。您可能需要先根据 x 坐标进行排序。

于 2012-05-02T12:36:29.840 回答
1

An easy solution for this example is to do collision-detection on the corners, and not the whole object. You can rotate the object on the point that touch in such an angle that the point that cut only touch. This solution only work if you angle up, and not down. To solve that you also do collision detection on the sides. You then rotate on the touching corner in such an angle that the side just touch.

于 2012-05-02T14:52:54.257 回答