Ошибка CS1729: «Vector3» не содержит конструктор, который принимает 1 аргумент - PullRequest
0 голосов
/ 25 января 2020

Я продолжаю пытаться понять, что я сделал неправильно, но не могу. Кто-нибудь может мне помочь? Там написано, что

error CS1729: 'Vector3' does not contain a constructor that takes 1 arguments.

Мой код:

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

public class PlayerController : MonoBehaviour
{
    public float moveSpeed;

    // Start is called before the first frame update
    void Start()
    {
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetAxisRaw("Horizontal") > 0.5f)
        {
            transform.Translate(new Vector3(Input.GetAxisRaw("Horizontal") * moveSpeed * Time.deltaTime));
        }
    }
}

Ответы [ 2 ]

2 голосов
/ 25 января 2020

Вектор 3 принимает 3 аргумента. X, Y и Z значение. Вам просто нужно поместить этот Input.GetAxisRaw («Горизонтальный») * moveSpeed ​​* Time.deltaTime) в положение x, как этот Transform.Translate (новый Vector3 (Input.GetAxisRaw («Горизонтальный»)) * moveSpeed ​​* Time.deltaTime, 0 , 0))

2 голосов
/ 25 января 2020

Структура Vector3 в System.Numerics действительно имеет конструктор, который принимает один float в качестве аргумента. (Который внутренне применяет это одно значение ко всем трем свойствам вектора.)

Однако вы не используете System.Numerics в своем коде. Похоже, что UnityEngine имеет другую Vector3 struct . И у него есть только один конструктор :

public Vector3(float x, float y, float z);

Таким образом, чтобы использовать его, вам нужно указать все три значения, используемые в векторе. Возможно, вы хотели разделить значения, а не умножить их?:

new Vector3(Input.GetAxisRaw("Horizontal"), moveSpeed, Time.deltaTime)

Если вы имели в виду что-то другое, вам нужно определить значения, которые вы хотите использовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...