C# 如果位置是位置
这是我在Unity中的代码,我一直在尝试查看rb的位置是否等于cameraPos的位置,但它不起作用(没有发生任何事情)C# 如果位置是位置,c#,unity3d,C#,Unity3d,这是我在Unity中的代码,我一直在尝试查看rb的位置是否等于cameraPos的位置,但它不起作用(没有发生任何事情) 请注意,两个位置可能永远不会完全相等,特别是在使用刚体时,如果没有播放控制器,因为运动实际上可能会在帧之间“跳跃” 您当前使用的运算符实际使用近似值,但精度仅为浮点值的1e-5(0.00001)。这可能会导致一些误解,但这只意味着,例如(0.99999,0.99999,0.99999)==(1,1,1)。任何比这更明显的东西都配不上 您更应该使用近似值,例如,用于检查对象是否
请注意,两个位置可能永远不会完全相等,特别是在使用
刚体时,如果没有播放控制器
,因为运动实际上可能会在帧之间“跳跃”
您当前使用的运算符实际使用近似值,但精度仅为浮点值的1e-5
(0.00001
)。这可能会导致一些误解,但这只意味着,例如(0.99999,0.99999,0.99999)==(1,1,1)
。任何比这更明显的东西都配不上
您更应该使用近似值,例如,用于检查对象是否小于X米,此时您可以使X大于或小于1e-5。在本例中,如果对象距离小于10cm,则应匹配:
public Rigidbody2D rb;
Vector2 cameraPos;
// Set the threshold in meters
public float Threshold = 0.1f;
void Start ()
{
cameraPos = new Vector2(0f, -3f);
}
if (Vector3.Distance(rb.position, cameraPos) <= Threshold)
{
print("Continue");
}
公共刚体2d rb;
矢量2摄像机;
//以米为单位设置阈值
公共浮动阈值=0.1f;
无效开始()
{
cameraPos=新矢量2(0f,-3f);
}
if(Vector3.Distance(rb.position,cameraPos)rb
的作用是什么?position
是否与cameraPos
近似或完全相等?您应该能够通过调试此代码来回答所有这些问题。什么不起作用?如果它无法构建(假设您提供的代码段是复制粘贴的),您的if语句必须在函数范围内声明。如果您只是没有看到希望在游戏中看到的结果,请确保位置完全匹配。如果位置不匹配,则可能是基于帧的移动问题(移动在游戏中不是连续的,而是离散的)。如果是这种情况,请使用捕捉(将位置设置为精确)或使用基于接近度的系统(如果两者之间的距离小于x单位,小于y单位)。
public Rigidbody2D rb;
Vector2 cameraPos;
// Set the threshold in meters
public float Threshold = 0.1f;
void Start ()
{
cameraPos = new Vector2(0f, -3f);
}
if (Vector3.Distance(rb.position, cameraPos) <= Threshold)
{
print("Continue");
}