Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用相交与精灵碰撞_C#_Xna - Fatal编程技术网

C# 使用相交与精灵碰撞

C# 使用相交与精灵碰撞,c#,xna,C#,Xna,我正在XNA上做一个游戏作业,我试图找出当我的玩家sprite走进一个岩石精灵时,如何阻止他,使用带有交叉点的if语句。当他走进岩石精灵时,我试着将玩家的速度设置为0,但随后他被卡在自己的位置上,无法移动。如何正确执行此操作?如果不查看代码,很难找出问题所在,但根据您所说的,我相信这可能是原因: 假定更新 上述代码的问题在于,与岩石对象碰撞后,将速度设置为0。如果是这种情况,一旦用户与岩石发生碰撞,即使他们试图退出,您的代码也会将其检测为碰撞并将其困在其中 为了解决这个问题,我们在将玩家移动到新

我正在XNA上做一个游戏作业,我试图找出当我的玩家sprite走进一个岩石精灵时,如何阻止他,使用带有交叉点的if语句。当他走进岩石精灵时,我试着将玩家的速度设置为0,但随后他被卡在自己的位置上,无法移动。如何正确执行此操作?

如果不查看代码,很难找出问题所在,但根据您所说的,我相信这可能是原因:

假定更新 上述代码的问题在于,与岩石对象碰撞后,将速度设置为
0
。如果是这种情况,一旦用户与岩石发生碰撞,即使他们试图退出,您的代码也会将其检测为碰撞并将其困在其中

为了解决这个问题,我们在将玩家移动到新位置之前检查玩家是否会发生碰撞:

Vector2 futurePos = pos;
futurePos.x += speed;
if(Collides(futurePos, rockPos))
{
    speed = 0;  // Will set speed to 0 BEFORE collision 
}

pos.x += speed;

如果您提供了代码的摘录,将非常有帮助。请欣赏详细的代码和响应!非常感谢。不用担心@orekideki:)。如果我的回答有帮助,请把它标记为正确:P谢谢。
Vector2 futurePos = pos;
futurePos.x += speed;
if(Collides(futurePos, rockPos))
{
    speed = 0;  // Will set speed to 0 BEFORE collision 
}

pos.x += speed;