平台游戏:角色掉得太快
Platformer Game: Character Falling Too Fast
好的,所以我有这个平台游戏,有方块和熔岩,还有一个角色。请记住,我只有 13 岁,对 C# 不是很熟悉(我已经使用 C# 和 .NET 大约 8 个月了)。这是我用于检测块的代码:
bool onGround = false
const int G = 5;
foreach (Block block in blocks)
{
while (!(characterRectangle.Intersects(block.Rectangle)))
{
location.Y += G;
break;
}
onGround = characterRectangle.Intersects(block.Rectangle);
}
问题?角色掉得太快了。方块越多,下落的速度越快。现在,我知道这是因为 foreach 循环,但解决这个问题的方法是什么。
在碰撞检测阶段,大多数游戏不会像重力一样将玩家向下移动。相反,在碰撞检测循环之前将玩家向下移动。然后,如果在您的碰撞检测期间,您发现他正在与某物发生碰撞,请将他向后移动,直到他不再碰撞。
查看 http://gameprogrammingpatterns.com/contents.html,一个金矿 :)。
何时调用此代码?
我注意到的第一件事:
"while" 循环或多或少是无用的,因为你总是调用 break;
。这将退出 while 循环。您也可以使用 "if" 子句。
此外,"location"是什么?这是您的播放器位置吗?如果是,那么对于 blocks
中的每个块,它的 Y 值将增加 G。因此,blocks
集合中的方块越多,您的玩家掉落得越快。
好的,所以我有这个平台游戏,有方块和熔岩,还有一个角色。请记住,我只有 13 岁,对 C# 不是很熟悉(我已经使用 C# 和 .NET 大约 8 个月了)。这是我用于检测块的代码:
bool onGround = false
const int G = 5;
foreach (Block block in blocks)
{
while (!(characterRectangle.Intersects(block.Rectangle)))
{
location.Y += G;
break;
}
onGround = characterRectangle.Intersects(block.Rectangle);
}
问题?角色掉得太快了。方块越多,下落的速度越快。现在,我知道这是因为 foreach 循环,但解决这个问题的方法是什么。
在碰撞检测阶段,大多数游戏不会像重力一样将玩家向下移动。相反,在碰撞检测循环之前将玩家向下移动。然后,如果在您的碰撞检测期间,您发现他正在与某物发生碰撞,请将他向后移动,直到他不再碰撞。
查看 http://gameprogrammingpatterns.com/contents.html,一个金矿 :)。
何时调用此代码?
我注意到的第一件事:
"while" 循环或多或少是无用的,因为你总是调用 break;
。这将退出 while 循环。您也可以使用 "if" 子句。
此外,"location"是什么?这是您的播放器位置吗?如果是,那么对于 blocks
中的每个块,它的 Y 值将增加 G。因此,blocks
集合中的方块越多,您的玩家掉落得越快。