小娜:几个精灵的碰撞处理
本文关键字:精灵 碰撞 处理 几个 小娜 | 更新日期: 2023-09-27 17:50:45
我正在使用xna框架(monogame)创建一个小型教育类游戏。
我在屏幕上有许多精灵使用velocite独自移动。我想添加碰撞处理,这样当2个或更多精灵相交时,它们就会改变方向。但目前我还没解决!
这是每个精灵的更新方法:
public void Update(GameTime gameTime)
{
if (CollisionDetected())
{
Xvelocity = -Xvelocity;
Yvelocity = -Yvelocity;
}
position.X += Xvelocity;
position.Y += Yvelocity;
}
private bool CollisionDetected()
{
for (int i = 0; i < ListCount.Count(); i++)
{
if ((this.rectangle().Intersects(ListCount[i].rectangle()))
{
return true;
}
}
return false;
}
关于如何做到这一点的任何提示或想法将是伟大的
看起来你在碰撞中所做的一切都是正确的(假设ListCount
是所有精灵的列表);然而,我没有看到任何更新碰撞矩形的东西。你可以修改精灵的位置,但不能修改它们的碰撞矩形。我会尝试添加这个(这假设位置指的是左上角):
public void Update(GameTime gameTime)
{
if (CollisionDetected())
{
Xvelocity = -Xvelocity;
Yvelocity = -Yvelocity;
}
position.X += Xvelocity;
position.Y += Yvelocity;
this.rectangle = new Rectangle(position.X, position.Y, rectangle.Width, rectangle.Height);
}
这会导致矩形随着精灵移动,然后碰撞就会起作用。
注意,如果position指的是精灵的中心,那么使用如下:this.rectangle = new Rectangle(position.X - rectangle.Width / 2,
position.Y - rectangle.Height / 2, rectangle.Width, rectangle.Height);