Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.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#_Unity3d - Fatal编程技术网

C# 如果位置是位置

C# 如果位置是位置,c#,unity3d,C#,Unity3d,这是我在Unity中的代码,我一直在尝试查看rb的位置是否等于cameraPos的位置,但它不起作用(没有发生任何事情) 请注意,两个位置可能永远不会完全相等,特别是在使用刚体时,如果没有播放控制器,因为运动实际上可能会在帧之间“跳跃” 您当前使用的运算符实际使用近似值,但精度仅为浮点值的1e-5(0.00001)。这可能会导致一些误解,但这只意味着,例如(0.99999,0.99999,0.99999)==(1,1,1)。任何比这更明显的东西都配不上 您更应该使用近似值,例如,用于检查对象是否

这是我在Unity中的代码,我一直在尝试查看rb的位置是否等于cameraPos的位置,但它不起作用(没有发生任何事情)


请注意,两个位置可能永远不会完全相等,特别是在使用
刚体时,如果没有
播放控制器
,因为运动实际上可能会在帧之间“跳跃”

您当前使用的运算符实际使用近似值,但精度仅为浮点值的
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");
}