如何比较“Infinityscript.Vector3”

本文关键字:Infinityscript Vector3 比较 何比较 | 更新日期: 2023-09-27 18:35:04

我正在制作一个小程序,并且到了必须比较两个InfinityScript.Vector值的地步。 我不知道如何正确地做到这一点。 我尝试使用 == 运算符,但失败了

运算符 '==' 不能应用于类型为 'InfinityScript.Vector3'

和 'InfinityScript.Vector3' 的操作数

我的最后一次尝试绝对是错误的:

    Vector3 flag1 = new Vector3(33, 66, -255);
    Vector3 ori = player.Origin;
    if (ori = flag1) {
        //do something
    }

它产生:

无法将类型"InfinityScript.Vector3"隐式转换为"bool">

正确的方法是什么?

如何比较“Infinityscript.Vector3”

InfinityScript.Vector3缺少一种比较向量的体面方法。 并非完全不寻常,浮点比较相当麻烦。 您可以使用:

if (ori.DistanceTo(flag) < 0.5f) {
    // Close enough
    //...
}

0.5f修改为您认为"足够接近"的任何值。 不要将其设为 0。

=是赋值 ==比较

所以你想要

if (ori == flag1)

你在 if 语句中使用了"="而不是"=="。

正如其他人所说,您希望 == 进行比较而不是 =(这是分配(

我知道"它不起作用",但这不是尝试其他东西的理由,而是了解正在发生的事情。您收到一个错误,说您无法将类型与相同类型进行比较,我想不出很多情况会发生这种情况,您是否可能使用相同的类使用过时的 dll(这意味着它无法将同一类的两个版本进行比较(?

您必须告诉我们有关您的项目如何组织的更多信息(单个项目或多个程序集(,并向我们提供 Vector3 的源代码,或者理想情况下,如果它是一个简单的项目并且不敏感,只需在此处发布解决方案。

在比较两个变量的相等性时,需要使用 ==:

        if (ori == flag1)
        {//do something
        }

如果仍然收到错误,则比较的值可能属于其他类型。 一个例子是变量ori是一个整数,变量值是标志 1 属于不同的类型

下面说明如何在不知道变量类型的情况下比较这两个值。 C# 比较两个未知类型(包括引用类型和值类型(的对象