所以现在我试图让我的游戏有些顺畅,易于制作,碰撞。我想要做的是让游戏一次添加一个向量的每个维度,所以如果只有X值可以改变,那么它只会改变X值。示例代码如下。
代码说明:
代码:
//Forward movement
if (key.IsKeyDown(Keys.W) || pad1.ThumbSticks.Left.Y >= 0.2)
{
//Check X axis
playerCollisionMatrix = Matrix.CreateTranslation(new Vector3(X - 10, Y - 10, Z - 10) + (norm + new Vector3(Vector3.Normalize(lookAt).X, 0, 0) / 10));
if (!IsCollision(playerModel, playerCollisionMatrix, floor, floorMatrix)) norm += new Vector3(Vector3.Normalize(lookAt).X, 0, 0) / 10;
//Check Y axis
playerCollisionMatrix = Matrix.CreateTranslation(new Vector3(X - 10, Y - 10, Z - 10) + (norm + new Vector3(0, Vector3.Normalize(lookAt).Y, 0) / 10));
if (!IsCollision(playerModel, playerCollisionMatrix, floor, floorMatrix)) norm += new Vector3(0, Vector3.Normalize(lookAt).Y, 0) / 10;
//Check Z axis
playerCollisionMatrix = Matrix.CreateTranslation(new Vector3(X - 10, Y - 10, Z - 10) + (norm + new Vector3(0, 0,Vector3.Normalize(lookAt).Z) / 10));
if (!IsCollision(playerModel, playerCollisionMatrix, floor, floorMatrix)) norm += new Vector3(0, 0, Vector3.Normalize(lookAt).Z) / 10;
}
显然不止一个,每个方向一个。但我想知道的是,如果这是最好的方法,或者还有另一种更好的方法吗?
可根据要求提供更多代码和信息。
答案 0 :(得分:0)
好的,我不确定是否有其他方法可以做到这一点,这可以根据需要运行。我认为唯一需要添加的是一种上坡的方法,但除此之外,这种方法非常有效!如果有人带着另一个更好的方式来做,发布和回答!否则,这就是这样做的方法!