主要更新订购

时间:2013-10-19 19:45:56

标签: c# xna xna-4.0

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

// 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()什么都不做的时候。如果你愿意,我很乐意添加更多代码。

1 个答案:

答案 0 :(得分:1)

如果我是正确的,你正在使用某种线条碰撞(如果你的角色底部碰到你的人体顶部)而不是箱子碰撞。在这种情况下发生像图像的左侧部分,角色掉出来。但是如果你使用盒子碰撞(图像的右侧),角色将与地形发生碰撞。通过计算他跌落的深度,你可以在绘制之前将字符放在地形之上。

即使您在检查碰撞之前按下5次按下按钮,它仍会保持整齐。

enter image description here

我希望这会对你有所帮助。