Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 法塞尔计/像素比 我在C++中用Box 2D做了很多工作,并给出了C语言的一个尝试。看起来Farseer通常用来代替Box2D(我知道Box2DXNA,但它似乎有点过时)。所以,Farseer就是我一直使用的。当我使用C++和Box 2D时,大家总是建议不要使用1像素/米的比例(因为什么原因,我不知道),通常建议使用大约30像素/米的地方。在我研究Farseer的过程中,我看到了很多相互矛盾的说法。一些人说使用1像素/米,其他人说使用刻度,其他人说使用ConvertUnits.ToSimUnits和ConvertUnits.ToDisplayUnits等_C#_Xna_Physics_Xna 4.0_Farseer - Fatal编程技术网

C# 法塞尔计/像素比 我在C++中用Box 2D做了很多工作,并给出了C语言的一个尝试。看起来Farseer通常用来代替Box2D(我知道Box2DXNA,但它似乎有点过时)。所以,Farseer就是我一直使用的。当我使用C++和Box 2D时,大家总是建议不要使用1像素/米的比例(因为什么原因,我不知道),通常建议使用大约30像素/米的地方。在我研究Farseer的过程中,我看到了很多相互矛盾的说法。一些人说使用1像素/米,其他人说使用刻度,其他人说使用ConvertUnits.ToSimUnits和ConvertUnits.ToDisplayUnits等

C# 法塞尔计/像素比 我在C++中用Box 2D做了很多工作,并给出了C语言的一个尝试。看起来Farseer通常用来代替Box2D(我知道Box2DXNA,但它似乎有点过时)。所以,Farseer就是我一直使用的。当我使用C++和Box 2D时,大家总是建议不要使用1像素/米的比例(因为什么原因,我不知道),通常建议使用大约30像素/米的地方。在我研究Farseer的过程中,我看到了很多相互矛盾的说法。一些人说使用1像素/米,其他人说使用刻度,其他人说使用ConvertUnits.ToSimUnits和ConvertUnits.ToDisplayUnits等,c#,xna,physics,xna-4.0,farseer,C#,Xna,Physics,Xna 4.0,Farseer,那么我应该用什么呢?现在,我使用ConvertUnits,但是所有的东西都在奇怪的地方渲染。是否有一个事实上的标准或任何我应该遵循的东西?提前感谢。Farseer 3.x基于Box2D。以及Box2D: Box2D已调谐米-千克-秒(MKS)。你移动的物体应该在0.1-10米之间。不要使用像素作为单位!您将得到一个抖动模拟 换句话说,假设一个“正常”的物理世界,你应该有1个物理单位=1m。但是,任何使大多数移动对象处于0.1到10个单位范围内的比例都应该可以 那么,假设你正在做一个汽车模型。一个

那么我应该用什么呢?现在,我使用ConvertUnits,但是所有的东西都在奇怪的地方渲染。是否有一个事实上的标准或任何我应该遵循的东西?提前感谢。

Farseer 3.x基于Box2D。以及Box2D:

Box2D已调谐米-千克-秒(MKS)。你移动的物体应该在0.1-10米之间。不要使用像素作为单位!您将得到一个抖动模拟

换句话说,假设一个“正常”的物理世界,你应该有1个物理单位=1m。但是,任何使大多数移动对象处于0.1到10个单位范围内的比例都应该可以

那么,假设你正在做一个汽车模型。一个非常非常简单的模型,恰好是一个矩形。您可以使用以下方式创建它:

float width = 4.1f; // average car length in meters
float height = 1.4f; // average car height in meters
// Note: this method takes half-sizes:
var carVertices = PolygonTools.CreateRectangle(width / 2f, height / 2f);
// Then pass carVertices into PolygonShape, etc...
另一个问题是如何以正确的大小渲染世界

通常的做法是在渲染时使用摄影机或视图矩阵(在标准的世界/视图/投影系统中)执行此操作。可以执行此操作的两个位置是
basicefect.View
(),或
SpriteBatch.Begin
(,)的转换矩阵参数


在我看来,Farseer
ConvertUnits
类是处理转换的一种非常丑陋的方式。

Farseer 3.x基于Box2D。以及Box2D:

Box2D已调谐米-千克-秒(MKS)。你移动的物体应该在0.1-10米之间。不要使用像素作为单位!您将得到一个抖动模拟

换句话说,假设一个“正常”的物理世界,你应该有1个物理单位=1m。但是,任何使大多数移动对象处于0.1到10个单位范围内的比例都应该可以

那么,假设你正在做一个汽车模型。一个非常非常简单的模型,恰好是一个矩形。您可以使用以下方式创建它:

float width = 4.1f; // average car length in meters
float height = 1.4f; // average car height in meters
// Note: this method takes half-sizes:
var carVertices = PolygonTools.CreateRectangle(width / 2f, height / 2f);
// Then pass carVertices into PolygonShape, etc...
另一个问题是如何以正确的大小渲染世界

通常的做法是在渲染时使用摄影机或视图矩阵(在标准的世界/视图/投影系统中)执行此操作。可以执行此操作的两个位置是
basicefect.View
(),或
SpriteBatch.Begin
(,)的转换矩阵参数


在我看来,Farseer
ConvertUnits
类是处理转换的一种非常丑陋的方式;我所有的基础计算。所以我几乎没有敌人认为他们的纹理是16像素宽。因此,当使用Farseer创建他们的身体时,宽度为0.25

16/64=0.25

最重要的是,感觉、大小/比例和重量适合我当前的游戏,我不相信有任何黄金法则或理由让你必须跳转才能让代码10=1等等


到目前为止,它对我来说非常有效。我从未想过尝试将10px转换为1m,但在我目前的游戏版本中,我认为这没有什么用处。

我使用int MetersPixel=64;我所有的基础计算。所以我几乎没有敌人认为他们的纹理是16像素宽。因此,当使用Farseer创建他们的身体时,宽度为0.25

16/64=0.25

最重要的是,感觉、大小/比例和重量适合我当前的游戏,我不相信有任何黄金法则或理由让你必须跳转才能让代码10=1等等


到目前为止,它对我来说非常有效。我从未想过尝试将10px转换为1m,但在我目前的游戏版本中,我认为这没有用。

你不应该只使用有意义的东西吗?如果一个2m高的播放器有20像素高,那么选择显然是10像素/米。我认为在你的问题中,你使用的是“像素”这个词,而你应该使用的是“单位”。你不应该只使用有意义的词吗?如果一个2m高的播放器有20像素高,那么选择显然是10像素/米。我认为在你的问题中,你使用的是“像素”这个词,而你应该使用“单位”这个词。