1

在我的主要更新功能中,我正在检查控制器输入、更新游戏角色和处理碰撞。我的主要更新功能目前看起来像:

// Handle Character/Terrain collision
foreach (ICharacer character in this.CharacterList)
    foreach(ITerrain terrain in this.TerrainList)
        HandleCollision.FixCollision(character, terrain)

// Get controller input
foreach (IController controller in this.ControllerList)
    controller.GetAction();

// Update characters

这一切都很好,但我注意到当我切换顺序以便在碰撞处理之前检查控制器输入时,字符会掉到地板上。

该方法是检查正在按下的按钮controller.GetAction()的一系列语句和命令。if如果没有按钮被按下,它什么也不做。

我想知道为什么这种排序很重要,尤其controller.GetAction()是什么都不做的时候。如果您愿意,我很乐意添加更多代码。

4

1 回答 1

1

如果我是正确的,那么您正在使用某种线碰撞(如果您的角色底部接触到人族的顶部)而不是框碰撞。在那种情况下,就像在图像的左侧一样,角色会掉出来。但如果你将使用盒子碰撞(图像右侧),角色将与地形发生碰撞。通过计算他跌倒的深度,您可以在绘制之前将角色放在地形之上。

即使您在检查碰撞之前按下 5 次向下按钮,它的盒子仍然会发生碰撞。

在此处输入图像描述

我希望这能帮到您。

于 2013-10-21T08:13:37.140 回答