因此,我尝试使用当前代码来检测我的播放器精灵是否与静止物体接触。我已经通过了边界框教程,他们使用的语法对我不起作用,因为我的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);
当我运行此代码时,它什么都不做,虽然它确实编译并运行。
答案 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。
我希望这有助于(某人), 安德鲁。