【问题标题】:Cannot implicitly convert type '(float xpos, int, int)' to 'UnityEngine.Vector3'无法将类型“(float xpos,int,int)”隐式转换为“UnityEngine.Vector3”
【发布时间】:2020-01-31 02:25:16
【问题描述】:

当我尝试运行此程序时,我是统一的新手,它给了我错误 无法将类型 '(float xpos, int, int)' 隐式转换为 'UnityEngine.Vector3'

这是我的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
[SerializeField]
private float _speed = 3.5f;
// Start is called before the first frame update
void Start()
{
    transform.position = new Vector3(0, 0, 0);
}

// Update is called once per frame
void Update()
{
    //variables
    float horizontalInput = Input.GetAxis("Horizontal");
    float verticalInput = Input.GetAxis("Vertical");
    float xpos = transform.position.x ;



    Vector3 direction = new Vector3(horizontalInput, verticalInput, 0);
    transform.Translate(direction * _speed * Time.deltaTime);

    if (transform.position.y >= 0)
    {
        transform.position = (xpos, 0, 0);
    }
    else if (transform.position.y <= -3.8f)
    {
        transform.position = new Vector3(xpos, -3.8f, 0);
    }
}
}

【问题讨论】:

  • 仔细查看所有其他你做类似事情的行,你会发现不同之处。
  • @RetiredNinja 对不起,我看不到。
  • transform.position = new Vector3(0, 0, 0); 与 transform.position = (xpos, 0, 0);
  • 非常感谢!我把头发拉出来就是为了这样一个简单的修复!

标签: c# unity3d compiler-errors game-engine


【解决方案1】:

您在第一个 transform.postion 上缺少构造函数。应该是:

transform.position = new Vector3(xpos, 0, 0);

【讨论】:

    【解决方案2】:

    好吧,

    你的问题是这句话

    transform.position = (xpos, 0, 0);

    这里编译器在赋值运算符 (=) 的右侧排除一个与 transform.position 完全相同类型的对象,即 Vector3。但是,当您分配诸如 float, string 之类的内容或其他内容时,它会混淆并引发错误,当然如果这两种类型兼容,例如 flot = int 这不会提出任何问题。这就是在这里发生的情况,您将编译器引入到一种对象类型,该对象类型既未在编译器中的任何地方定义,也未在项目中的任何地方定义。 将一个对象分配给另一个对象有很多方法可以做到这一点。

    1)。在这里,我通过使用 new 关键字调用其构造函数来创建 Vector3 的新对象。

    transform.position = new Vector3(xpos, 0, 0)

    2)。在这里,您已经在程序的早期创建了一个对象,您可以随意更改它,然后进行分配。

    Vector3 position = new Vector3(0, 0, 0);
    .
    .
    transform.position = position;
    

    3)。最后一个你可以直接将一个对象的属性分配给另一个对象

    transform.position = transform2.position;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多