在我的主要更新功能中,我正在检查控制器输入,更新游戏角色和处理碰撞。我的主要更新功能目前如下:
// 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()
什么都不做的时候。如果你愿意,我很乐意添加更多代码。
答案 0 :(得分:1)
如果我是正确的,你正在使用某种线条碰撞(如果你的角色底部碰到你的人体顶部)而不是箱子碰撞。在这种情况下发生像图像的左侧部分,角色掉出来。但是如果你使用盒子碰撞(图像的右侧),角色将与地形发生碰撞。通过计算他跌落的深度,你可以在绘制之前将字符放在地形之上。
即使您在检查碰撞之前按下5次按下按钮,它仍会保持整齐。
我希望这会对你有所帮助。