C# Transform.left不起作用

C# Transform.left不起作用,c#,unity3d,C#,Unity3d,我知道有人问过这个问题,但我不知道如何解决这个问题 if (this.gameObject.tag == "1Team"){ unitGO.transform.position += transform.right * movementSpeed * Time.deltaTime; } else if (this.gameObject.tag == "2Team"){

我知道有人问过这个问题,但我不知道如何解决这个问题

if (this.gameObject.tag == "1Team"){
         
             unitGO.transform.position += transform.right * movementSpeed * Time.deltaTime;
 
          } else if (this.gameObject.tag == "2Team"){
                           
             unitGO.transform.position += transform.left * movementSpeed * Time.deltaTime;
 }
红色transform.left中的单位标记(transform'不包含“left”的定义),因此我不知道如何将角色向左移动。我尝试过使用
-Transform.right
Transform.right*-movementSpeed
新向量3(-1,0,0)
unitGO.Transform.position-=新向量3(1,0,0)*movementSpeed*Time.deltaTime和其他选项,而不获取我想要的移动

如果我改变了我想要移动的游戏对象的标签,它实际上会向右移动,所以我认为这与附加脚本无关

有什么建议吗


谢谢你而
矢量3.左
存在,对于
变换
只有
变换.右

这没有问题,因为要向左移动,只需使用
-transform.right

现在请注意,您使用
新矢量3
的意图也不起作用,因为如果使用它,您将沿Unity的X轴在全局空间中移动。。不在局部空间

现在有多种可能的解决方案:

对于在本地空间移动,请执行以下操作:

if (gameObject.CompareTag("1Team"))
{
    unitGO.transform.position += transform.right * movementSpeed * Time.deltaTime;
} 
else if (gameObject.CompareTag("2Team"))
{
    unitGO.transform.position -= transform.right * movementSpeed * Time.deltaTime;

    // Same as
    //unitGO.transform.position += -transform.right * movementSpeed * Time.deltaTime;
}
或者如果你想在Unity的全局X轴上移动

if (gameObject.CompareTag("1Team"))
{
    unitGO.transform.position += Vector3.right * movementSpeed * Time.deltaTime;
} 
else if (gameObject.CompareTag("2Team"))
{
    unitGO.transform.position += Vector3.left * movementSpeed * Time.deltaTime;

    // Same as
    //unitGO.transform.position -= Vector3.right * movementSpeed * Time.deltaTime;
}
或者,如果您确实希望沿正在移动的对象的局部X轴移动,则可以使用默认情况下使用移动对象的局部空间的
Translate

if (gameObject.CompareTag("1Team"))
{
    unitGO.transform.Translate(Vector3.right * movementSpeed * Time.deltaTime);
} 
else if (gameObject.CompareTag("2Team"))
{
    unitGO.transform.Translate(Vector3.left * movementSpeed * Time.deltaTime);

    // Same as
    //unitGO.transform.Translate(-Vector3.right * movementSpeed * Time.deltaTime);
}


一般情况下,如果输入错误,请使用而不是
=
来抛出错误

也尝试了与文档中显示的示例完全相同的操作
如果我从要移动的游戏对象更改标记,它实际上会向左移动。。那听起来像是你的问题。。。一般来说,如果有输入错误,使用而不是
=
来抛出错误对不起,我是说对了,只是更改了它。刚刚尝试使用CompareTag,但仍然不起作用@你能描述一下我想要的运动吗?
?矢量3(-1,0,0)。X轴上的左方向@derHugoyup,已经尝试过,但仍然没有移动:(.感谢您的时间,请定义
不工作
。发生了什么事?解决了!!问题在于标记“2Team”。我还尝试复制标签以确保没有拼写错误。我无法理解为什么,但现在我更改了标签的名称,它移动了。