在XNA中进行冲突检查,如果语句不起作用

时间:2012-11-25 23:04:51

标签: c# xna collision-detection

因此,我尝试使用当前代码来检测我的播放器精灵是否与静止物体接触。我已经通过了边界框教程,他们使用的语法对我不起作用,因为我的sprite变量设置不同。

这是我正在使用的if语句。

if (spritePosition.Equals(Booksposition))
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

我只需要C#中的语法来检查两者是否发生冲突。

这就是我的纹理设置......

Texture2D myTexture;
Vector2 spritePosition = new Vector2(600,300);
Vector2 spriteSpeed = new Vector2(50.0f, 50.0f);
Texture2D Books;
Vector2 Booksposition = new Vector2(100, 300);
Vector2 BooksSpeed = new Vector2(50.0f, 50.0f);

当我运行此代码时,它什么都不做,虽然它确实编译并运行。

2 个答案:

答案 0 :(得分:0)

而不是这个

if(spritePosition.Equals(Booksposition))
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

你应该尝试这样的事情

if(spritePosition.x >= Booksposition.x || spritePosition.y >= Booksposition.y)   
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

>=运营商可能不适合你,但我认为你明白了。

答案 1 :(得分:0)

我认为这是一个迟到的回复,但为了向其他人提供信息,那么边界框怎么样?

在2D中很容易做到,只需使用:

BoundingBox myCollider = new BoundingBox((new Vector3(spritePosition.X,spritePosition.Y,0),(new Vector3(spriteWidth,spriteHeight,0));

在每个对象周围绘制其中一个,然后使用:

进行测试

if(collider1.intersects(collider2)) {     从那里开始 }

你可以使用矩形而不是边界框但是当我学习碰撞时,每个人都告诉我使用3D工具,只需将z轴值设置为零,就可以将它们平滑到2D。

我希望这有助于(某人), 安德鲁。