0

所以我正在尝试使用我当前的代码来检测我的玩家精灵是否与静止物体接触。我已经完成了边界框教程,他们使用的语法对我不起作用,因为我的精灵变量设置不同。

这是我正在使用的 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);

当我运行这段代码时,它什么也不做,尽管它确实编译和运行。

4

2 回答 2

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;
}

>=操作员可能不适合您,但我认为您明白了。

于 2012-11-25T23:11:58.173 回答
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。

我希望这对(某人)有所帮助,安德鲁。

于 2013-07-07T14:46:35.247 回答