【发布时间】:2014-03-18 13:53:43
【问题描述】:
我正在使用平移矩阵来移动屏幕,但是当玩家与一个物体发生碰撞时,玩家会抖动,就好像它想同时在两个地方一样。看起来速度想继续下降,而块将其推高,我该如何解决这个问题?
视频:Here
相机类:
class Camera
{
public Vector2 Position;
Viewport viewPort;
public Vector2 cameraBounds;
public float wasGround;
public Matrix Transform()
{
var translationMatrix = Matrix.CreateTranslation(new Vector3(-Position.X, -Position.Y, 0));
return translationMatrix;
}
public Player thing(Player player)
{
cameraBounds.X = player.Position.X - Game1.offset.X;
if (cameraBounds.X > 0)
Position.X = player.Position.X - Game1.offset.X;
else
Position.X = 0;
//Problem
cameraBounds.Y = player.Position.Y - Game1.offset.Y;
if (cameraBounds.Y > 0)
{
Position.Y = player.Position.Y - Game1.offset.Y;
if (player.goingUp == false && (wasGround != player.ground))
Position.Y = player.ground - Game1.offset.Y;
wasGround = player.ground;
}
else
Position.Y = 0;
return player;
}
public Camera(Viewport viewport)
{
viewPort = viewport;
}
}
我尝试通过添加 player goingUp 和 ground if 语句来解决问题,但这没有帮助。
【问题讨论】:
-
如果你能分享这个项目,我会 100% 解决这个解决方案。 xD
-
@Wallstrider 我会测试 Davor 是否给了我正确的答案,然后我会尝试链接整个项目。如果您对我将如何做到这一点有任何想法,那将很有帮助。
-
是的,因为我不知道您实际上是如何处理冲突的。唯一的相机对我来说不够用。
-
如何显示所有代码?我应该把它放在哪个网站上?我应该将其压缩并放在某个地方并链接到它吗?
-
您可以使用this site 上传包含您的解决方案的存档。下载后,如果您不希望有人窃取您的项目,您可以删除链接。我不会,因为我已经完成了我的 2D 游戏。
标签: c# matrix xna velocity perspectivecamera